FeLLoN 0 Опубликовано 5 Октября 2012 Поделиться Опубликовано 5 Октября 2012 как сделать чтоб при подходе к нпс, он кидал тебе диалог как коряга на Скадовске.... И если можно то распишите как это делать в мельчайших деталях... просто я пока нуб... и ещё где есть уроки по диалогом для Зов Припяти... можно ссылку пожалуйста Ссылка на комментарий
Artos 99 Опубликовано 5 Октября 2012 Поделиться Опубликовано 5 Октября 2012 (изменено) FeLLoN, специально для всех тебе подобных и 'нубов' в частности написана шапка топика, в которой кучка ссылок, где можно найти и те, по которым "расписано как это делать в мельчайших деталях..." Изменено 5 Октября 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Shredder 49 Опубликовано 5 Октября 2012 Поделиться Опубликовано 5 Октября 2012 Такой вопрос. Можно ли при спавне объекта установить ему condition? Делаю так: obj = alife():create('stalker_outfit', db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) local pk = m_netpk,get(obj, 1) local data = pk:get() data.condition = 0.5 pk:set(data) Комбез появляется целёхонький. Я знаю, что при изменении некоторых параметров у объекта нет-пакетом, его нужно отправить в оффлайн и вернуть обратно. Но ведь в данном случае объекта ещё нет в онлайне. Подскажите, буду благодарен. Ссылка на комментарий
Artos 99 Опубликовано 5 Октября 2012 Поделиться Опубликовано 5 Октября 2012 (изменено) Shredder, в отличии от иных 'инвентарных' предметов, комбезы (outfit) и оружие имеют два параметра, отвечающие за "износ" (исправность). Один в state-пакете и второй - в update-пакете, при чем второй как раз и будет в конечном итоге присвоен заспавненному комбезу. Т.о. тебе требуется получать полный нет-пакет и задавать оба: data.condition и data.upd.condition. В принципе, можно брать только update-пакет ( pk = m_netpk,get(obj,2) ) и изменять именно data.upd.condition - этого будет достаточно. Комбез будет спавниться исправным (он в любом случае при скриптовом спавне исправен на 100%) и "изнашиваться"... до указанного тобою значения. obj = alife():create('stalker_outfit', vector(), 0, 0, db.actor:id()) --/ спавн в инвентарь актору local pk = m_netpk,get(obj, 2) --/ получаем доступ к update-пакету if pk:isOk() then --/ доступ получен? local data = pk:get() --/ читаем update-параметры data.upd.condition = 0.5 --/ изменяем параметр pk:set(data) --/ запоминаем end Примечание: Действительно, при спавне объекта и изменении его параметров через нет-пакеты в той же самой функции, т.е. объект еще не забинден - не требуется манипулировать переводами в оффлайн и обратно, т.к. измененные значения читаются из нет-пакета при выходе объекта в онлайн. Изменено 5 Октября 2012 пользователем Artos 1 "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Shredder 49 Опубликовано 5 Октября 2012 Поделиться Опубликовано 5 Октября 2012 Artos, спасибо за помощь. Приведённый код похож на правду, но не работает. Во-первых, у update-части пакета свойство condition имеет другой формат. У только что созданного объекта оно равно 255. Ну это не важно. Комбез всё равно появляется у ГГ целёхонький. Если таких же способом заспавнить объект подальше от ГГ, чтобы он не вышел в онлайн сразу, тогда всё норм - прихожу к месту спавна, у комбеза нужное состояние. Есть ещё идеи? Так не хочется этой канители с переводом оффлайн/онлайн. Ссылка на комментарий
ХОВАН 3 Опубликовано 5 Октября 2012 Поделиться Опубликовано 5 Октября 2012 Shredder, критично делать через нет-пакеты? А то ведь есть set_condition(0.0..1.0) Как я думаю, твой предмет не успевает "спавниться" Ссылка на комментарий
Charsi 440 Опубликовано 5 Октября 2012 Поделиться Опубликовано 5 Октября 2012 Shredder, при спавне в радиусе онлайна можно использовать client_spawn_manager. local sobj = alife():create('stalker_outfit', vector(), 0, 0, db.actor:id()) level.client_spawn_manager():add(sobj.id, 0, function (id,obj) obj:set_condition(0.5) end) Lua и LuaJIT плагины для Notepad++ SciTE-RU 3.5.5 плагины для MilkShape3D Ссылка на комментарий
Shredder 49 Опубликовано 5 Октября 2012 Поделиться Опубликовано 5 Октября 2012 Дело в том, что condition не конечная цель, мне ещё апгрейды нужно добавлять. Ссылка на комментарий
Artos 99 Опубликовано 5 Октября 2012 Поделиться Опубликовано 5 Октября 2012 (изменено) Shredder, к сожалению не все и/или не всегда можно сделать "простенько и со вкусом"... При спавне любого предмета актору - переводить этот предмет on->off->online и не получится, т.к. владелец предмета (актор) не может быть в оффлайне. Также, действительно, не посмотрел внимательно коды и... а) параметр upd.condition имеет hex-значение и должен задаваться в диапазоне 0...255 (0x00...0xFF). б) при спавне в инвентарь актору измененный нет-пакет не перечитывается. В итоге, выход не так уж и сложен: 1. Спавним предмет рядом с актором и меняем ему нужные параметры при помощи нет-пакетов 2. Ставим коолбэк, по которому при выходе предмета в онлайн - предмет трансферится актору. В итоге код может быть таким: --/ спавн 'рядом' с актором sobj = alife():create('stalker_outfit', db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id()) local pk = get_netpk(sobj,2) --/ получаем доступ к update-пакету if pk:isOk() then --/ доступ получен? local data = pk:get() --/ читаем update-параметры data.upd.condition = math.floor(255*0.5) --/ изменяем параметр pk:set(data) --/ запоминаем --/ ставим коллбэк: по выходу в онлайн - трансфер актору level.client_spawn_manager():add(sobj.id, 0, function(id,obj) obj:transfer_item(obj, db.actor) end) end Не так все и усложнено :-) Заодно и свои апдейты для костюма тут можешь изменять/добавлять, но тогда уж манипулируя полным нет-пакетом... Изменено 5 Октября 2012 пользователем Artos 1 "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
_Призрак_ 11 Опубликовано 5 Октября 2012 Поделиться Опубликовано 5 Октября 2012 Artos Вы верно шутите. Вместо красивой прогулки по саду, длинной в 100 метров, вы выбираете путь через горы. Зачем нужно использовать нет-пакеты, устанавливать самописные каллбеки, вместо использования кода на 2 строки, который предложил вам Charsi? Freedom Ссылка на комментарий
Artos 99 Опубликовано 5 Октября 2012 Поделиться Опубликовано 5 Октября 2012 (изменено) _Призрак_, скорее "шутишь" ты... Во-первых, мне предлагать ничего и не нужно, вопрос задавался не мною, а автор вопроса уже высказался по предлагаемой "паре строк". Во-вторых, т.н. "самописные" - писаны разработчиками GSC, и не стОит приписывать мне их заслуги. Тем более этот же коллбэк использован и в упомянутой тобою "красивой прогулке". Ну и, ты бы почитал последние посты, прежде чем "советовать". Изменять, добавлять 'updates' для костюма, что затеял Shredder, ты тоже собираешься парой строчек by Charsi? Не стОит сводить вопрос заданный для 'общего' случая к упрощениям и частностям. Этот раздел "школа..." не для выдачи на гора пары строчек готового кода, а все же (само)обучение, т.е. как и чем работать в той или иной ситуации. Надеть шоры никогда не поздно, а вот снять их часто даже не знают как... Даже в этом простеньком примере, стОит чуток изменить задачу: например заспавнить в некий тайник (да еще на др.локации) потрепаный броник - и все подобные "пары" строк из "красивой прогулки по саду" превратятся в блуждание по болоту... Изменено 5 Октября 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Callisto 2 Опубликовано 5 Октября 2012 Поделиться Опубликовано 5 Октября 2012 Доброго времени суток. К вопросу о проводниках, точках перехода и пр. Задумалось мне заспавнить переход и все вроде понятно в его секции, но вот все-таки непонятно про dest_graph_point. Сбственно вопрос: как определить какая точка мне нужна? И где узнать ее имя? Ссылка на комментарий
Clayman 104 Опубликовано 5 Октября 2012 Поделиться Опубликовано 5 Октября 2012 Callisto, dest_graph_point - это граф-поинт, на котором будет спавнится актор на другой локации, куда кидает переход. Т.е. этот граф-поинт нужно создать на другой локации, направление (direction) которого будет определять, куда актор будет смотреть при переходе. Ссылка на комментарий
Malandrinus 615 Опубликовано 5 Октября 2012 Поделиться Опубликовано 5 Октября 2012 Callisto, Clayman, при скриптовом спавне этот параметр вроде как и не требуется. Там есть несколько параметров, которые исчерпывающе определяют точку перехода: dest_game_vertex_id, dest_level_vertex_id, dest_position, dest_direction, dest_level_name graph_point - есть такой специальный объект. Возможно, здесь подразумевается его использование, хотя я не уверен и сам никогда с такими объектами дела не имел. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Artos 99 Опубликовано 5 Октября 2012 Поделиться Опубликовано 5 Октября 2012 (изменено) Clayman, а можно узнать откуда этот бред про граф-поинт и тем более о 'нужно создать на другой локации'? Все необходимыt параметры для коордират и направления задаются по-отдельности (dest_game_vertex_id, dest_game_vertex_id, dest_position, dest_direction) и именно они определяют в какой точке на локакции окажется актор и куда будет смотреть. Парамет dest_graph_point имеет строковое значение ('start_actor_XX') и может даже быть пустой строкою. Мне не известен ответ на вопрос Callisto, и сам бы хотел понять что это - рудимент от былых задумок разработчиков (скорее всего) или... К сожалению сканирование ресурсов игр (ТЧ/ЧН/ЗП) на предмет нахождения каких-либо "граф-поинтов" иль чего иного с именами 'start_actor_XX' - ничего не дает, кроме упоминаний этого непонятного параметра в секциях левел-ченджеров... При экспериментах - задание любой строки-имени для этого параметра не давало никакого видимого эффекта. Изменено 5 Октября 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Clayman 104 Опубликовано 5 Октября 2012 Поделиться Опубликовано 5 Октября 2012 malandrinus, ну я так понял, что она через аллспавн делает. Просто в оригинале ПЫС-овских уровней всегда есть конечный граф-поинт, на котором спавнится актор при переходе. А через алл-спавн вроде граф-поинты и не добавишь, да? Я просто с ним не работаю... Artos, распаковал бы уровни и посмотрел ради интреса на "бред" ПЫСов в СДК. Ссылка на комментарий
Malandrinus 615 Опубликовано 5 Октября 2012 Поделиться Опубликовано 5 Октября 2012 Clayman, я имел в виду не геймпоинты глобального графа. Их можно добавлять только в SDK. Я имел в виду, что есть такой тип игровых объектов, cse_alife_graph_point. Я могу только предположить, что объекты этого класса имеют отношение к этому параметру в левелченджере. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Clayman 104 Опубликовано 5 Октября 2012 Поделиться Опубликовано 5 Октября 2012 Просто в СДК есть только один спавн-элемент graph_point, и при настройке level_changer-а нужно указать именно уровень для перехода и graph_point для перехода... все. Актор спавнится именно в этом граф-поинте с заданным направлением. И dest_graph_point указывает именно на имя этого граф-поинта, оно может быть любое, какое задашь в его параметрах. Ссылка на комментарий
Artos 99 Опубликовано 5 Октября 2012 Поделиться Опубликовано 5 Октября 2012 (изменено) Clayman, вот теперь можно дать ответ (спасибо за наводку): dest_graph_point - имя граф-поинта (точки на карте) которому в SDK сопоставлены dest_game_vertex_id, dest_game_vertex_id, dest_position, dest_direction. В игре эта точка (как объект) отсутствует и для спавна через скрипт и/или all.spawn не задействуется. Изменено 5 Октября 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Callisto 2 Опубликовано 5 Октября 2012 Поделиться Опубликовано 5 Октября 2012 Всем огромное спасибо, переход все-таки работает. Но теперь появился другой вопрос: что заставляет ГГ спавнится не по заданным координатам, а в месте, предусмотренном сюжетом? Я так предполагаю, чито это только при первом посещении локации? Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти