Artos 99 Опубликовано 5 Июня 2012 Поделиться Опубликовано 5 Июня 2012 (изменено) Clayman, А зачем тебе вообще через скрипт визуал менять? Не проще создать сколько угодно нужных профилей с нужными визуалами и вводить (убирать) в игру? Ну если тебе так "проще", то другим как раз проще и не мусорить в конфигах и именно нужному неписю в нужное время менять визуал, а не изгаляться с переспавнами по профилям. Shredder, ты, видно, не из любителей читать ... Про визуалы/броники только пару дней назад в топике по ковыряниям в файлах SoC упоминалось - почитал бы! И, визуал, это тебе не просто внешний вид непися, а как раз и его защита/иммунитеты - со всеми из этого вытекающими ... Изменено 5 Июня 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Shredder 49 Опубликовано 5 Июня 2012 Поделиться Опубликовано 5 Июня 2012 (изменено) В character_desc_* куча профилей, в которых уже прописан визуал. Допустим я в них хочу заменить, но не во всех, тогда что делать?. А в моём способе что муторно? Визуал в одном месте прописать? Ну а с иконками вообще не заморачиваюсь, какие есть, такие есть, всё равно, когда играю, на них уже не смотрю. Да и потом, вдруг нужно какой-нибудь визуал из игры убрать - удаляю его из одного файла и всего делов. Мне кажется, способ оч. хороший. Добавлено через 30 мин.: Artos, про защиту я знаю, только сейчас про неё речи нет. В общем, попытался я сделать через net-paketы (своровал кусок кода из imm мода). Принцип работы: через нет-пакет записываю новый визуал, потом отправляю npc в оффлайн, потом отправляю обрано в онлайн. И всё в принципе работает, но есть проблемка: у трупов появляются вещи, которых быть не должно: гармошка, пда, гитара и т.д. Может кто-нибудь подскажет из-за чего? Функция, которая отправляет npc онлайн/оффлайн: function convert_npc(npc_id, state) local npc=level.object_by_id(npc_id) local serv_obj=alife():object(npc_id) if not serv_obj then need_change[npc_id]=nil return end if npc == nil and state == "turn_on" then serv_obj.sim_forced_online = true if serv_obj.online ~= true then serv_obj:switch_online() end need_change[npc_id]=nil elseif npc and state == "turn_off" then if _m.is_stalker(serv_obj) then npc:clear_animations() if serv_obj:alive() then npc:stop_talk() end end serv_obj:switch_offline() need_change[npc_id]="turn_on" end end Изменено 5 Июня 2012 пользователем Artos Ссылка на комментарий
Artos 99 Опубликовано 5 Июня 2012 Поделиться Опубликовано 5 Июня 2012 (изменено) Shredder, это как же "про защиту" ты не говоришь(?), ежели уже дважды сетуешь на "неубиваемость" неписей после переодевания?! В чем же тогда вопрос с переодеванием визуала? Пока именно только о "неубиваемости" и о "выглядят как комок с тряпками" - вроде как вопрошаешь ... Ну а по появлению (иль исчезновению) предметов в трупах - почитай-ка топики и ФАКи на предмет спавна лута в трупы менеджером death_manager.script. Не мешай разные вопросы в один. И, прячь портянки кодов под спойлер, плз. Изменено 5 Июня 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Shredder 49 Опубликовано 6 Июня 2012 Поделиться Опубликовано 6 Июня 2012 Artos, возможно ты не внимательно посмотрел мой пример использования функции set_visual_name, т.к. там я совершенно не меняю параметры защиты у visual'а, более того там вообще всего один файл изменён по сравнению с оригиналом. Так о какой защите может идти речь? Проблема - npc после переодевания их функцией set_visual_name становятся бессмертными, независимо от того, какой визуал ты им указываешь. Да и к тому же, при переодевании npc нет-пакетом такой проблемы нет. Вообщем, либо после (до) использования функции set_visual_name c npc нужно что-то ещё сделать, либо эта функциия вообще предназначена только для ГГ, т.к. приминетельно к нему никаких проблем не возникает. Ссылка на комментарий
Artos 99 Опубликовано 6 Июня 2012 Поделиться Опубликовано 6 Июня 2012 (изменено) Shredder, к моему сожалению ... чаще замечаю то, о чем не подозревает сам спрашивающий, чем невнимателен к прочитанному ... ;-) 1. Ты так и не понял, что визуал для непися - это и есть защита! Смена визуала - как раз, в случае разных типов/классов визуалов, и есть изменение параметров защиты непися. Что значит(?) всего лишь одна строка: self.object:set_visual_name([[actors\stalker_neutral\stalker_neutral_nauchniy]]) Да всего лишь то, что непись теперь имеет костюм с высоким коэффициентом иммунитетов (high_resistance) и выше среднего параметры для bone_protection (body_damage_5,head_damage_3). Предполагаю, что проверял ты в игре на новичке иль начальном сталкере, которые появляются в начале новой игры и у которых защита как раз начального уровня. А ты все гутаришь "не трогаю защиту" И не нужно голословить в топике о бессмертии после переодевания в любой костюм. Чудес не бывает и тем более в игре, где все цифры/параметры можно прочитать и сравнить. Тут уже недавно было и ты видно не прочитал .. о "в чем бессмертие меряешь - в попугаях?". 2. То, что сами разрабочики используют данную функцию (set_visual_name) именно в xr_motivator.script, т.е .в биндере сталкеров, а не в акторском биндере, как раз говорит, что применяется не к актору, а к неписям. Изменено 6 Июня 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Shredder 49 Опубликовано 6 Июня 2012 Поделиться Опубликовано 6 Июня 2012 (изменено) На счёт попугаев. Специально для тебя добавил ещё один файлик, в котором в начале игры добавил себе гаусс. Встречаю двух типов в научных комбензонах (переодетых функцией set_visual_name), подхожу в упор и стреляю в голову из гаусса!!!. Он только: "Ах ты ж епт..." и по мне стрелять. Я думаю, мне не стоит тебе рассказывать, на сколько мощный гаусс в оригинале ЗП? И о том, что параметры защиты прошиты в визуале указанием на определённый файл я оч. хорошо знаю. Поэтому, уважаемый Artos, вместо того, чтобы принимать меня за дурачка, который совсем не шарит в кодах Сталкера, попробовал бы воспроизвести ситуацию и убить этих двух типов даже используя вот такую строку:self.object:set_visual_name([[actors\stalker_neutral\stalker_neutral_1]]) Изменено 6 Июня 2012 пользователем Shredder Ссылка на комментарий
Artos 99 Опубликовано 6 Июня 2012 Поделиться Опубликовано 6 Июня 2012 Shredder, прочитай свой первичный вопрос(!) и теперешние сетования/пояснения ... Какова цель твоих постов? За дурочка тут никого не считают, но ... нередкость когда спрашивают о том, о чем сами же не понимают иль рассуждают о том, что и близко не лежало. В чем конечная цель вопросов? Как пользоваться функцией иль как сменить визуал? О пользовании функцией уже ранее сказано, бессмертными не становятся как и "кучей трепья". Ставим как в твоем примере в stalker_binder:net_spawn код со сменой визуала на "actors\\stalker_neutral\\stalker_neutral_1" первому же новичку который спавнится в начале новой игры. Кстати, именно этот визуал он изначально и имеет. Записываем получившийся нет-пакет (пишем на 1-ом апдейте). Если интересно, могу выложить. Берем обычный винторез (зачем нам гаусс?) и обычным для него патроном сносим бошку неписю первым же выстрелом - никакого бессмертия. Однако то, что при онлайновой замене этой функцией визуала у неписей дополнительно повышается "пулестойкость" - есть такое дело. Почему именно так - вероятно только разработчики могут сказать, т.к. нет пакеты ничего криминального не говорят. Поисследую. Ну а если нужно просто менять визуал - то уже годы как это делабт именно нет-пакетами и не жалуются ... ;-) "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Shredder 49 Опубликовано 6 Июня 2012 Поделиться Опубликовано 6 Июня 2012 Я знаю, что ещё со времён Теней Чернобыля успешно используют нет-пакеты для этого дела. Но вот захотелось в ЗП использовать новую функцию, а она упрямится ((( Прочитал свой первый пост, в конце которого: как можно заставить эту функцию (set_visual_name) работать правильно? Если тебе не сложно, то покажи пожалуйста код, как её используешь ты. Ссылка на комментарий
Artos 99 Опубликовано 6 Июня 2012 Поделиться Опубликовано 6 Июня 2012 (изменено) Shredder, грубо говоря у себя в наработках я не использую эту функцию (set_visual_name), т.к. стараюсь писать по-возможности "кроссплатформенно", т.е. под все три версии игры. Был момент, когда повозился с нею, посмотрел на что способна и чем удобна. Минусов не меньше чем плюсов. Помимо уже затронутой некоторой непонятки с изменением иммунитетов, основной минус - то что применимо только для клиентских об'ектов. Но если ранее не было полного доступа к нет-пакетам сталкеров и нельзя было понять отчего есть особенности при смене - отложил ... Твой вопрос как раз вновь заставил вспомнить и, как выше уже сказал, попробую найти разницу в замене нет-пакетами и "штатной" для ЗП функцией. Сейчас же проверял в точности как и ты, т.е. при появлении непися в он-лайне меняю ему визуал и смотрю ... Про "комок тряпок" наверное не стОит упоминать, ты скорее всего напутал с названием/путем визуала. Слабые визуалы вполне "убиваемые", о чем и написал уже. Более защищеные - дают бОльший прирост к иммунитетам, тут нужно поисследовать ... может дополнительно включаются какие флаги/режимы. Ведь не просто так разрабы применили у себя эту функцию для присвоения визуала актора кому-то другому (типа двойника). Т.о. функция то работает правильно, если ей давать правильный визуа. ;-) Ну а особенности ее слишком "правильной" работы, которая именно тебе не подходит и как ее привести к "обычной" замене визуала - требует времени и анализа. Через день-два попробую дать информацию. Добавлено через 123 мин.: P.S. Кстати, я так и не понял из вопроса, тебе нужно менять визуалы для новых (тобою спавнящихся) неписей или уже имеющихся в игре. Все же это имеет свои особенности. Изменено 6 Июня 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Shredder 49 Опубликовано 6 Июня 2012 Поделиться Опубликовано 6 Июня 2012 Ты натолкнул меня на одну мысль и я ещё немного поэкспериментировал. Что выяснилось: 1) set_visual_name отрабатывает норм, если ей передаётся такой же visual, как и был. Делал так: visual = npc:get_visual_name() npc:set_visual_name(visual) походу, где-то в движке проверка стоит, и функция просто не выполняется. 2) Теперь я знаю зачем разрбам понадобилась функция set_visual_name - для отыгрывания сценок с гг, когда спавнится сталкер и ему устанавливается визуал, как у ГГ. И понятно, что в этой сценке того двойника не должны убить, вот функция и делает его бессмертным. 3) А комок то всё равно получается. Вот как я его получал: local stalker_ids = {} function update() local npc local visual for id,t in pairs(stalker_ids) do if t then npc = level.object_by_id(id) if npc and (t + 20000 < time_global()) then npc:set_visual_name([[actors\stalker_neutral\stalker_neutral_nauchniy]]) stalker_ids[id] = nil end end end end function on_npc_spawn(npc) if npc and npc:alive() then stalker_ids[npc:id()] = time_global() end end Как говорится, в споре рождается истина! И хоть я так и не узнал, как правильно использовать функцию set_visual_name, зато теперь мне совершенно ясно, что её не нужно использовать для моих целей, т.к. она для этого не предназначена. Ссылка на комментарий
Artos 99 Опубликовано 6 Июня 2012 Поделиться Опубликовано 6 Июня 2012 Shredder, хм ... вот за скрин и код "как скрутил" - спасибо, теперь еще немного инфы к особенностям функции. Проверю, конечно, почему нельзя менять визуал спустя N-ное время после спавна ... или это некая особенность. В общем функция явно не для "нормальной" смены вызуала неписям. "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Repka 31 Опубликовано 6 Июня 2012 Поделиться Опубликовано 6 Июня 2012 Что надо сделать, что бы в игре с разрешением 800х600 пропорции были как на широкоформатном мониторе 16х9? Ссылка на комментарий
Artos 99 Опубликовано 7 Июня 2012 Поделиться Опубликовано 7 Июня 2012 (изменено) Возвращаясь к вопросу (Shredder) о функции set_visual_name: Довольно странная и возможно кому-то интересная функция. Как "правильно" она должна работать или как "правильно" ее использовать - можем пока только предполагать. Информация пока такова: 1. Функция, вызываемая для гейм-об'екта, устанавливает именно гейм-об'екту указываемый визуал, совершенно не обращаясь к серверной копии этого об'екта (каких-либо манипуляций с нет-пакетами не обнаружено). Обращаю внимание, что обычно смена визуала идет от обратного, т.е. заменяется серверному об'екту и, переводом в оффлайн и обратно, параметры передаются соответствующей копии гейм-об'екта. 2. По единственному практическому примеру из исходной игры можно заметить, что смена визуала разработчиками предусматривалась в самом начале активизации метода net_spawn в биндере сталкера. При чем(!), судя по месту строк, т.е. до: object_binder.net_spawn(self, server_object) - предполагаю, что тут происходит некая синхронозация серверного и клиентского об'ектов в движке игры. НПС, получив таким образом новый визуал вполне адекватно выглядит и анимации штатные. Имеется особенность: - если визуал менять на точно такой же - НПС немного повышает свою защиту/иммунитеты; - чем более отличен по типу новый визуал от прежнего - тем неубиваемее стновится НПС ... 3. В случае, если визуал "не родной" и функция замены визуала вызывается несколько позже чем в методе net_spawn, хотя бы из level.client_spawn_manager():add(...), что практически одномоментно с нет-спавном, визуал/модель НПС сворачивается в "клубок" и начинает "ползать" по локации, имитируя поведения самого НПС. Т.е. "ходит", порой зарываясь в грунт, стреляет, виден на карте, ... "Корявость" визуала вероятно имеет причиной рассинхронизацию серверной и клиентских копий об'екта из-за временнОй задержки. 4. Если такого НПС, с нормальным визуалом/моделью или свернутой в клубок, отправить в оффлайн и обратно (или сэйв-лоад) - НПС восстанавливает свой первоначальный визуал и свойства ... Это вероятно можно использовать для неких эффектов временной маскировки/мимикрии/временного бессмертия и др. ... Вот такая хитрая и малопонятная, но возможно интересная функция set_visual_name имеется в ЗП. ;-) Изменено 7 Июня 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Shredder 49 Опубликовано 7 Июня 2012 Поделиться Опубликовано 7 Июня 2012 Хочу добавить, что при "комках" случались вылеты, в логе было что-то типа error stalker in visual. Ссылка на комментарий
Shredder 49 Опубликовано 8 Июня 2012 Поделиться Опубликовано 8 Июня 2012 Возвращаюсь к теме визуала, хотя здесь скорее всего вопрос по нет-пакетам (туго у меня с ними). Сначала объясню на словах, что делаю, потом код. Мне нужно в первый спавн сталкера сменить ему визуал и установить флаг, что визуал сменён, чтобы при следующем спавне уже не менять визуал. Для этого я в файле se_stalker.script добавляю этот флаг self.not_first_spawn = false в функцию se_stalker:__init . В функции сохранения/записи в этом же файле добавляю соответственно в se_stalker:STATE_Write(packet) строку packet:w_bool(self.not_first_spawn), а в функцию se_stalker:STATE_Read(packet, size) строку self.not_first_spawn = packet:r_bool() в самом конце функций. В функцию se_stalker:switch_offline() в начале ставлю self.not_first_spawn = true. Для работы с нет-пакетами использую функции из SGM-мода. В первый спавн сталкера я нет-пакетом заменяю визуал. Чтобы изменения коснулись клиентского объекта - отправляю его в оффлайн, а потом обратно в онлайн. Но почему то иногда флаг спавна лута death_droped получается установлен в true ещё до смерти сталкера, из-за этого при убийстве у него появляются гармошка, гитара, кпк и т.д. Я подозреваю, что как раз в функциях _p.read_stalker_params, _p.write_stalker_params, которые как раз работают с нет-пакетом, тоже нужно внести изменения, чтобы они правильно записывали/читали новый параметр not_first_spawn, но не могу сообразить, что нужно добавить. Помогите пожалуйста. Может есть более лёгкий способ запомнить, что сталкер уже появлялся на свет? function se_stalker:__init (section) super (section) self.ini = nil self.ini_initialized = false self.smart_terrain_conditions = nil self.smart_terrain_conditions_initialized = false -- этот флаг берётся из работы смарта -- true = всегда в онлайне -- false = всегда в офлайне -- condlist = условие, которое отпределяет true или false -- nil = смарту всё равно self.job_online = nil self.job_online_condlist = nil self.death_droped = false --'Генерил ли персонаж выпадаемые предметы или нет. self.not_first_spawn = false --'Указывает, что сталкер заспавнился первый раз self.m_registred = false self.sim_forced_online = false if db.offline_objects[self.id] == nil then db.offline_objects[self.id] = {} end self.board = sim_board.get_sim_board() end function se_stalker:switch_offline() self.not_first_spawn = true _callbacks.on_npc_switch_offline(self) cse_alife_human_stalker.switch_offline(self) end -------------------- function se_stalker:STATE_Write(packet) cse_alife_human_stalker.STATE_Write (self, packet) if self.online then packet:w_stringZ(tostring(level and level.object_by_id(self.id) and level.object_by_id(self.id):level_vertex_id())) else packet:w_stringZ(tostring(db.offline_objects[self.id] and db.offline_objects[self.id].level_vertex_id)) end packet:w_stringZ(tostring(db.offline_objects[self.id] and db.offline_objects[self.id].active_section)) packet:w_bool(self.death_droped ) packet:w_bool(self.not_first_spawn) end -------------------- function se_stalker:STATE_Read(packet, size) cse_alife_human_stalker.STATE_Read (self, packet, size) if self.script_version > 10 then local old_lvid = packet:r_stringZ() if db.offline_objects[self.id] == nil then db.offline_objects[self.id] = {} end db.offline_objects[self.id].active_section = packet:r_stringZ() if db.offline_objects[self.id].active_section == "nil" then db.offline_objects[self.id].active_section = nil end if old_lvid ~= "nil" then db.offline_objects[self.id].level_vertex_id = tonumber(old_lvid) end end self.death_droped = packet:r_bool() self.not_first_spawn = packet:r_bool() end function read_stalker_params(id) local sobj if type(id) == "number" then sobj = alife():object(id) else sobj = id id = sobj.id end if sobj then stpk:w_begin(0) uppk:w_begin(0) sobj:STATE_Write(stpk) sobj:UPDATE_Write(uppk) local size=stpk:w_tell() local size1=uppk:w_tell() stpk:r_seek(2) uppk:r_seek(2) local ret = {} -- cse_alife_trader_abstract properties ret.money = stpk:r_s32() ret.specific_character = stpk:r_stringZ() ret.trader_flags = stpk:r_s32() ret.character_profile = stpk:r_stringZ() ret.community_index = stpk:r_s32() ret.rank = stpk:r_s32() ret.reputation = stpk:r_s32() ret.character_name = stpk:r_stringZ() -- cse_alife_object properties ret.game_vertex_id = stpk:r_u16() ret.distance = stpk:r_float() ret.direct_control = stpk:r_s32() ret.level_vertex_id = stpk:r_s32() ret.object_flags = stpk:r_s32() ret.custom_data = stpk:r_stringZ() ret.story_id = stpk:r_s32() ret.spawn_story_id = stpk:r_s32() -- cse_visual ret.visual_name = stpk:r_stringZ() ret.upd_extra_data=read_extra(uppk,size) ret.extra_data=read_extra(stpk,size) return ret end return nil end -- таблица параметров и id на входе function write_stalker_params(ret,id) local sobj if type(id) == "number" then sobj = alife():object(id) else sobj = id id = sobj.id end if sobj then stpk:w_begin(0) uppk:w_begin(0) -- cse_alife_trader_abstract properties stpk:w_s32(ret.money) stpk:w_stringZ(ret.specific_character) stpk:w_s32(ret.trader_flags) stpk:w_stringZ(ret.character_profile) stpk:w_s32(ret.community_index) stpk:w_s32(ret.rank) stpk:w_s32(ret.reputation) stpk:w_stringZ(ret.character_name) -- cse_alife_object properties stpk:w_u16(ret.game_vertex_id) stpk:w_float(ret.distance) stpk:w_s32(ret.direct_control) stpk:w_s32(ret.level_vertex_id) stpk:w_s32(ret.object_flags) stpk:w_stringZ(ret.custom_data) stpk:w_s32(ret.story_id) stpk:w_s32(ret.spawn_story_id) -- cse_visual stpk:w_stringZ(ret.visual_name) write_extra(uppk,ret.upd_extra_data) write_extra(stpk,ret.extra_data) local size=stpk:w_tell() stpk:r_seek(2) uppk:r_seek(2) sobj:STATE_Read(stpk,size) sobj:UPDATE_Read(uppk) end end local new_visual = visuals[math.random(1,#visuals)] local npc_data = _p.read_stalker_params(server_obj) if not npc_data then return end npc_data.visual_name = new_visual _p.write_stalker_params(npc_data, server_obj) need_change[npc:id()] = 'turn_off' function vch_update() for id, state in pairs(need_change) do if state then convert_npc(id, state) end end end function convert_npc(npc_id, state) local npc=level.object_by_id(npc_id) local serv_obj=alife():object(npc_id) if not serv_obj then need_change[npc_id]=nil return end if npc == nil and state == "turn_on" then serv_obj.sim_forced_online = true if serv_obj.online ~= true then serv_obj:switch_online() end need_change[npc_id]=nil elseif npc and state == "turn_off" then if _m.is_stalker(serv_obj) then npc:clear_animations() if serv_obj:alive() then npc:stop_talk() end end serv_obj:switch_offline() need_change[npc_id]="turn_on" end end Ссылка на комментарий
Artos 99 Опубликовано 9 Июня 2012 Поделиться Опубликовано 9 Июня 2012 Shredder 1. Я бы не советовал увлекаться добавлениями в нет-пакет своих новых значений, тем более, как ты пишешь "туго у меня с ними". Работа с нет-пакетами требует аккуратности и ТОЧНОГО понимания что/куда ты пишешь/читаешь, тут каждый(!) байт/бит важен. 2. Тобою используются кастрированные функции чтения/записи нет-пакетов! Сам посмотри, все что в нет-пакетах после параметра visual_name - считывается в общую кучу extra_data и твоя читалка писалка (соответственно и ты) никак не знает ни о каких death_droped и тем более добавленном тобою not_first_spawn. Соответственно, в лучшем случае, ты просто теряешь этот новый параметр, в худшем - искажается нет-пакет. Что мешает тебе в качестве флага о уже свершившемся факте смены физуала использовать или инфопоршень или просто писать переменную в pstor твоему об'екту, если конечно подобное только для онлайновых важно? Даже просто прочитать из нет-пакета имеющийся визуал у непися и принять решение - стОит его менять иль нет - это тоже вариант. В общем, если хочешь ставить метку именно в нет-пакет, то и подбери соответствующий инструмент чтения/записи и освой работу с нет-пакетами на дОлжном уровне. "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
karavan 36 Опубликовано 10 Июня 2012 Поделиться Опубликовано 10 Июня 2012 (изменено) Shredder и Artos NPC в свернутом состоянии похож на модель без указанной анимации, как это происходит в СДК при просмотре анимаций. Возможно при смене вижуала модели просто не успевает назначить анимации. Может причина разгадка в скриптах назначающих анимки НПС? Пишу не из пустого места, лишь бы что-то написать. Я возвращал анимации из ЧН в ЗП сидения у коста, затрагивая файлы указывающие какую за какой анимку проигрывать, в одном из случаев получил именно такие комки. Изменено 10 Июня 2012 пользователем karavan Ссылка на комментарий
karonbaron 1 Опубликовано 10 Июня 2012 Поделиться Опубликовано 10 Июня 2012 Ребята, такой вопрос: кто-нибудь создавал новые укрытия от выбросов? Я тут наковырял кое-что. Значит, в распакованном all.spawn создается спейс-рестриктор с именем zat_surge_hide_b42 (это из имеющихся). Вот его [227] ; cse_abstract properties section_name = space_restrictor name = zat_surge_hide_b42 position = 26.2803802490234,5.27456712722778,367.865234375 direction = -0.0748270004987717,0.522725999355316,0.00596300000324845 ; cse_alife_object properties game_vertex_id = 0 distance = 0 level_vertex_id = 293223 object_flags = 0xffffff3e ; cse_shape properties shapes = shape0 shape0:type = box shape0:axis_x = 15.4629888534546,0,0 shape0:axis_y = 0,6.51879787445068,0 shape0:axis_z = 0,0,15.4629888534546 shape0:offset = 0,0,0 ; cse_alife_space_restrictor properties restrictor_type = 3 Далее, регистрируем это укрытие в файле configs\misc\surge_manager.ltx. И все, будет работать? Или где-то еще что-то нужно прописать?.. Есть мысли по этому вопросу? Ссылка на комментарий
Artem_K. 75 Опубликовано 10 Июня 2012 Поделиться Опубликовано 10 Июня 2012 Надеюсь туда зашел. В общем решил освоить ЗП, подключил n-количество локаций, заспавнил на них некоторое количество разных физ. объектов и тп, заспавнить нпс я пока не смог, по этому решил добавить аномалии и артефакты, с аномалиями проблем не возникло, а вот с артефактами не "срослось". Делал все по статье из Сталкер Инсайд, но артефакты в аномалии так и не появились. Может на новых локациях поцесс добавления артефактов отличается, может где-то, что-то надо еще прописать? Ссылка на комментарий
Clayman 104 Опубликовано 10 Июня 2012 Поделиться Опубликовано 10 Июня 2012 (изменено) karonbaron, об этом уже много раз писалось и статья на вики есть. Нужно зарегить смарт в simulation_objects_props. ltx с параметром surge = 1 и создать работы (way points типа смарт_surge_1_walk (look)), чтобы нпс юзали укрытие. Artem_K., процессом появления артов управляет спавн-элемент anomal zone. Прописывай его конфиг по аналогии с ЗП-шными (в gamedata\configs\scripts\уровень\anomaly), должны быть вей-поинты для спавна артов и прочие параметры. Это в теме обсуждалось, ищи поиском. Изменено 10 Июня 2012 пользователем Clayman Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти