Malandrinus 615 Опубликовано 1 Сентября 2009 Помогите, пожалуйста! Вот такой вопрос: непись заспавнен: npc=alife():create("bar_dolg_respawn_1",... Как выковырять строку "bar_dolg_respawn_1" из npc? Пробовал npc:section() - он равен "stalker". Заспавнил этого долговца. Что для серверного объекта snpc:section_name(), что для клиентского cnpc:section() выдаёт одинаково "bar_dolg_respawn_1". Откуда у тебя "stalker" взялся непонятно. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 2 Сентября 2009 Он будет и писать Сталкер секция у него такая. Ну может еще написать сталкер_монолит или сталкер_зомбиед. Как он может выдать "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 Его надо выполнить подряд два раза. При первом выполнении заспавнится долговец (слегка подвинет ГГ), при втором - для него выведется информация. У меня чётко выводится та секция, которую спавнил. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 2 Сентября 2009 dan, между "stalker" и у примеру твоим "my_trader" принципиальной разницы нет. Всё это секции, которые находятся в system.ltx. С секцией "stalker" можно заспавнить и скриптом, а секцию "my_trader" можно прописать кому-то для спавна через all.spawn. Мне не понятно другое, почему у 4ufak спавнится с одной секцией, а потом при проверке секция другая. По-моему, он просто другого сталкера проверяет. Я проверил по-другому. Записал как и у 4ufak проверку в коллбек биндера на использование. По-любому секция выводится та, с которой был создан. Для меня вопрос закрыт. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 3 Сентября 2009 Сяк, я вижу здесь одну задачу и одну проблему. задача - это сделать анимации "сидеть на стуле", "встать со стула", "сесть на стул". Решаемо наверное, но ведь анимации делают методом съёмки живых актёров. На коленке не сделаешь. Проблема - это как заставить сталкера прийти туда, где стоит стул. Я так думаю, если сделать стул частью геометрии уровня, то можно под стулом сделать вертекс, и тогда это получится. А вот если это будет физический объект, то сталкер будет отталкивать его при приближении к нему. В общем гемор нехилый. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 3 Сентября 2009 Вообще то в сталкере нет ни одной анимации снятой с людей (это очень хорошо видно, движения всех нпц немножко корявые, в общем видно), а захватывать движения это шибко дорого, по этому анимки они делали именно на коленке (кстати не очень много игр могут похватсяться анимацией захваченой с людей), и сделать это реально, да сложно, геморно, но можно. Я просто с трудом представляю, как можно сделать мало-мальски похожую на правду анимацию скелета из нескольких десятков костей. Ну можно так можно. ведь любой физический объект можно зафиксировать, и его уже никто не сдвинет. Но тогда и сталкер не сможет на это место встать. Упрётся лбом и будет "идти" на месте до бесконечности. И в этом случае, как я понимаю, не сможет сработать нужный эвалуатор "пришёл на место и можно садиться". Надо наверное, как-то помудрить с моделью стула. Сделать типа как у вертолёта оболочку проницаемую для всего. Анимка сидения на стуле есть в ТЧ. Просто не сидит зараза! Если кто разбирался - прошу помочь. А как называется анимация? а в ТЧ вообще кто-нибудь использует эту анимацию, ну кроме Сидоровича, у него помоему своя анимация? я просто что-то уже не помню. Я так думаю, проблема именно во взаимодействии с физическими объектами. А Сидор - это монстр со своим набором костей, анимация у него своя, и стул - часть геометрии уровня. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 6 Сентября 2009 (изменено) mangust, (Подозреваю, что вряд ли есть ответ, но все-таки.)не зря подозреваешь =) 1. Обзор работы движка "с высоты птичьего полета".Не уверен, если честно, что у самих разрабов это документировано в полной мере. Без шуток. За что отвечает движок, за что скрипты;Полностью скриптовую модель ещё никто не описал, хотя получить представление можно почитав wiki и топики отсюда. И да, с офф. форума, разумеется. оффлайн, онлайн;Брехнёй на эту тему я немного развлекался в этом топике в этом сообщении. Хотя ничего принципиально нового там нет. Просто пытался обобщить. что когда загружается (ltx, xml, script),Файлы конфигурации при загрузке программы, скрипты - при загрузке уровня (точнее, по мере использования). основные принципы, на которых построена игра.Вах! Это шютка такой? =) Есть несколько переводных учебников по геймостроительству. Есть немало учебников (как англоязычных, так и переведённых) оп отдельным технологиям: графике, звуку, дизайну и т.п. Есть море разливанное книг по программированию на C++. 2. Методы отладки и тестирования. Быстрые способы загрузки игры (тестовые сборки - с одной локаций или что-то подобное; про -nointro, -noprefetch и минимальные настройки знаю); вывод сообщений в лог, в пользовательский файл, на экран; что-нибудь похожее на перехват исключений, assert. Наиболее удобный аддон, вроде повелителя зоны для ЧН, позволяющий спавнить и проверять логику объектов. Может на что-то еще надо обратить внимание? Больной вопрос. Есть мультиплеерные сборки с отладочной инфой. Последняя mp демка соответствует первому сингловому релизу. Тестовые сборки если и есть, то в окрытом доступе не лежат. Впрочем, в топике сообщества картоделов можно подобрать для этих целей какую-либо небольшую локацию. Для вывода сообщений в лог вообще говоря легальных функций нет. Используют побочные эффекты от get_console():execute(<команда>). Выводить в файл в ТЧ способа нет. В ЧН для этого экспортировали пространство имён io. Ассерты есть в Lua. Перехват исключений... ну и аппетиты у Вас! Может пригодится моя статья "тестирование скриптов без обрушения" в топике Уроки по модостроению. Вообще, полезная тема. в файлах на сайте gameru.net здесь есть разные скрипты, в том числе по выводу на экран разной инфы. Там много чего есть. Monnoroch, ты прав, я исправил. Изменено 6 Сентября 2009 пользователем malandrinus Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 6 Сентября 2009 Как проверить,может ли НПС добраться до указанного левел вертекса? npc:accessible(vertex) кажется так Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 7 Сентября 2009 в скрипте se_respawn ... меняем следующие параметры ... дык вот изменения вступят в силу когда , после начала новой игры или как , объясните подробно ... После начала новый игры.. Но может и с новым переходом на локу... Но на счёт этого не сильно уверен. Изменения в скриптах вступают в силу после перезагрузки уровня (скрипты грузятся заново). Поскольку переход на новый уровень реализован фактически через механизм сохранения/загрузки, то к тому-же эффекту приводит смена уровня. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 8 Сентября 2009 Может кому-то пригодится... В качестве альтернативы вывода в лог можно использовать перенаправление консольного вывода в текстовый файл. В этом случае работает функция Lua print(). Вывод буферизированный, способа флушить его я не нашёл (т.е. если движок крашнется, то часть потеряется). Зато можно выводить произвольно форматированный текст с пробелами, табуляциями, переносами строки и т.п. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 8 Сентября 2009 Kirag, вся логика вроде как парсится в файле xr_logic.script. А там как раз и прописаны файлы xr_conditions.script и xr_effects.script. Я бы просто создал в этих файлах псевдонимы функций, вынесенных в другие файлы. Типа такого fun = another_file.fun Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 10 Сентября 2009 Подскажите пожалуйста как должна выглядеть функция оживления трупов Трупы оживить невозможно. Можно убрать труп и заспавнить вместо него живого непися. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 10 Сентября 2009 нужно узнать труп он или нет а потом использовать функцию (как узнать не знаю) npc:alive() npc - клиентский объект (game_object) Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 10 Сентября 2009 Monnoroch, непись стоит там, откуда не добраться по сетке до пути Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 10 Сентября 2009 Monnoroch, Ну не знаю... А локация пути и непися совпадают? Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 10 Сентября 2009 А пути - это как? В смысле как? Локация непися и локация пути, по которому ходит непись. Непонятно, как с балкончика можно ещё куда-то дойти. Но говоришь проверка срабатывает... Значит она неправильно срабатывает. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 11 Сентября 2009 Kolmogor, значит , что sobj равен nil В этом случае вроде бы другая ошибка, что-то вроде "attempt to index global 'sobj' (a nil value)" Может, sobj как-то получился не серверным объектом? Monnoroch, что выдаёт type(sobj)? Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 11 Сентября 2009 что надо проделать с клиентским обьектом,чтобы стало можно расковырять его нетпакетом? Ну если подумать, то можно было бы попытаться через биндер. Там вроде есть соответствующие методы. Однако, этого ещё никто не делал. Пока же можно только получить по клиентскому объекту серверный и его ковырять нетпакетами. Надо только не забыть перед изменениями в оффлайн перевести. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 12 Сентября 2009 Не вариант.... Это единственный способ. И чем он тебе не угодил? Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 12 Сентября 2009 Monnoroch, попробуй исследовать ситуацию примерно так. local con = get_console() if state_lib then con:execute(type(state_lib)) if state_lib.states then con:execute(type(state_lib.states)) if state_lib.states[state_name] then con:execute(type(state_lib.states[state_name])) if state_lib.states[state_name].movement then con:execute(type(state_lib.states[state_name].movement)) end end end end это странно, но я не могу найти ни одного скрипта, где бы создавалась переменная state_lib. Ни в АМК, ни в оригинале. Судя по всему, это глобальная таблица, но в _g.script такой нет. Кто её создаёт, неясно. Сам движок создаёт? Странно это всё. Добавлено через 2 мин.: Блин, вот я тупой. Это ж не таблица, а скрипт. Добавлено через 10 мин.: тогда остаётся только один вариант - state_name не соответствует ни одному из тех значений, что прописаны в скрипте state_lib. его и надо проверять Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 13 Сентября 2009 как в файле ui_icon_equipment расширить пладздарм для иконок? В моей подписи программа "Редактор иконок инвентаря " Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение