abramcumner 1 159 Опубликовано 17 Августа 2011 Поделиться Опубликовано 17 Августа 2011 Виталкер, level.spawn в игре не работает. Используется в СДК. А дерется машина из-за того, что погружена немного в землю или в другое препятствие. Когда ты ее касаешься для машины активируется просчет физики и она выпрыгивает из земли, попутно убивая ГГ. При стрельбе просчет физики активируется издалека Надо просто чуток скорректировать координаты спавна машины Ссылка на комментарий
Painter 3 412 Опубликовано 17 Августа 2011 Поделиться Опубликовано 17 Августа 2011 Я не шибко ковырял ТЧ, но... вот небольшой пример: [remark] wounded = wounded [wounded] hp_state = 35|wounded_heavy@help_heavy hp_state_see = 35|wounded_heavy@esc_tolik_help hp_victim = 35|nil hp_cover = 35|false hp_fight = 35|false help_dialog = tutorial_wounded_give_medkit P.S. Если не понятно, попробуй изучить логику Толика. Портфолио Ссылка на комментарий
Artos 99 Опубликовано 17 Августа 2011 Поделиться Опубликовано 17 Августа 2011 (изменено) Виталкер Выше abramcumner уже дал основную информацию для ответа. Немного дополню упущенное. Вычислить (без SDK) достаточно точно требуемые координаты для спавна объектов довольно сложно, тем более еще и параметр(ы) 'направление/direction' важны. Чтобы заспавненная машина стояла как 'вкопанная', в секции спавна объекта (в all.spawn) можно применить 'стопор' типа: '[collide] ignore_static' и/или 'привязку кости' - 'fixed_bones = root'. Конкретные примеры см. в исходных кодах игры, их немало Однако так машина будет всегда 'вкопаной' и покататься на ней не удасться. Если требуется спавн машины для 'покататься', то самым разумным решеним (которое давно используется в модах и в том же АМК) - заспавнить машину чуть выше требуемой точки и дать ей скриптом после старта игры небольшой импульс (хитом и/или apply_force). Так она опустится на землю и встанет на колеса и не будет 'драться'. Но и 'вкопанной' она не будет - при касаниях может и укатиться ... :-) Изменено 17 Августа 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Виталкер 0 Опубликовано 17 Августа 2011 Поделиться Опубликовано 17 Августа 2011 Artos, Раскажи по больше, о том как дать небольшой импульс, нпсу я могу дать, а вот придмету незнаю, как? ВИТ@/\|{ЕР Ссылка на комментарий
Artos 99 Опубликовано 17 Августа 2011 Поделиться Опубликовано 17 Августа 2011 (изменено) Виталкер В моде АМК в 'bind_physic_object.script' имется функционал для отслеживания 'жизни' БТРов. Ипользуя уже имеющееся (или заново) следует в 'generic_physics_binder:net_spawn(data)' определить, что объект именно машина, и дать 'пинок', например так: if self.object:clsid() == clsid.car_s then --/ Опускаем технику на землю (on_the_ground): local ph_shell = self.object:get_physics_shell() --/ получаем управление над физикой if ph_shell then ph_shell:apply_force(0,-1,0) --/ прикладываем небольшую силу (вниз) end local h = hit() h.draftsman = self.object h.direction = vector():set(0,-1,0) --/ направление 'вниз' h.power = 0.001 h.impulse = 1 h.type = hit.strike self.object:hit(h) --/ наносим небольшой импульс end Для 'нпсов' подобное не применимо, точнее ... по аналогии в соотв. биндере можно также дать хит, но физической оболочки (ph_shell) в отличии от тех же машин у гуманоидов и монстров нет. Т.е. придется обходиться только хитом. Но и это не требуется - неписи сами начитают двигаться (как только окажутся в онлайне) и сами 'опускаются' на землю. :-) Примечание: Для того чтобы машины были забиндены (обрабатывались биндером) требуется у них наличие логики ... или 'ручками' добавить класс машин в биндер (по аналогии с прожекторами). Изменено 17 Августа 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
RayTwitty 509 Опубликовано 17 Августа 2011 Поделиться Опубликовано 17 Августа 2011 Artos, немного можно уменьшить код. Будет достаточно такой функции: if self.object:clsid()==clsid.car_s then local h = hit() h.draftsman = db.actor h.type = hit.strike h.direction = vector():set(0,0,0) h.power = 0.0001 h.impulse = 0.0001 self.object:hit(h) end Давно пользуюсь, проблем не было Ссылка на комментарий
Виталкер 0 Опубликовано 17 Августа 2011 Поделиться Опубликовано 17 Августа 2011 (изменено) Почему же понятно...И изучать логику толика довольно непонятное дело, так как там остались куски нетронутой логики со времён билдов, и я сделал в своём логике всё как у лиса, а один фиг не работает, но щас пойду попробую, сделать как ты сказал Добавлено через 302 мин.: Jurok, Написал всё равно не работает.... Изменено 17 Августа 2011 пользователем Виталкер ВИТ@/\|{ЕР Ссылка на комментарий
ColR_iT 171 Опубликовано 17 Августа 2011 Поделиться Опубликовано 17 Августа 2011 Виталкер, возможно ты и прописал логику как у Лиса, но ты не прописал параметры как у Лиса, а именно здоровье. В секции спавна твоего НПС пропиши ему здоровье ниже порогового значения в логике, например, как у Лиса:health = 0.280000001192093 Ссылка на комментарий
Artos 99 Опубликовано 17 Августа 2011 Поделиться Опубликовано 17 Августа 2011 (изменено) Shadows Как правило даю несколько избыточные варианты. Модмейкер сам может решить что применять, а что нет. Выбросить всегда легче, чем добавить (особенно когда нет кода). :-) И, ИМХО, лучше иметь более полную шпаргалку под рукою, чем ее усеченный вариант. Понадобилось - известно откуда скопипастить. :-) Но могу чуток покритиковать твой вариант. Применение 'толчка' для физических предметов и более действенно и менее ресурсоемко (ну да это копейки) и строк поменьше. Нанесение хита - все же задействует и саму схему хита с ее колбэками и пр. Если в логике объекта имеется 'обидчивость' (on_hit), то нередко она апприори приписывается актору (хотя и ущерб равен/близок к нулю). Что, кстати, и сделано у тебя намерено (h.draftsman = db.actor <???). Так что то, что не имеешь проблем - это пока не будешь использовать логику. Ведь не только машинки для покататься спавнятся, но и 'враждебные' БТРы ... Т.о. если сокращать код, то я бы сокрашал не толчок, а хит. Но для машин - вполне применимы и полностью приведенные коды. Тем более начальные пинки даются только при старте игры и оптимизация тут ... призрачна. Примечание: Хитовать то почти все научились, а вот пинать - к сожалению не многие. Изменено 17 Августа 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Stalkersof 183 Опубликовано 18 Августа 2011 Поделиться Опубликовано 18 Августа 2011 А я хотел при спавне присваивать каждому объекту ID и рестрикторе вызывать инфопоршень и удалять каждого нпс отдельно функцией по его иду. Но этот вариант мне кажется более совершенный и меньше будет грузить игру. А дальше в момент телепортации просто делай перебор по iD\ или по db.storage и ищи через string.finde() те секции персонажей, у которых есть в названии _portal_npc и удаляй их Только я недавно этим занялся и пока работаю только с мануалом а такую функцию конечно пока не напишу. Может кто приведет примерчик этой функции с перебором массива и удалением по имени. Буду очень признателен и добавлю себе в мануал. Freeplay Graphic Mod(FGM) Ссылка на комментарий
_Призрак_ 11 Опубликовано 18 Августа 2011 Поделиться Опубликовано 18 Августа 2011 (изменено) for i=1,65535 do local obj = alife():object(i) if obj then if string.find(obj:name(),"_portal_npc") then alife():release(se_obj, true) end end end Изменено 18 Августа 2011 пользователем _Призрак_ Freedom Ссылка на комментарий
abramcumner 1 159 Опубликовано 18 Августа 2011 Поделиться Опубликовано 18 Августа 2011 Stalkersof, Кстати, а ты проверил - в твоих неисследованных областях аи-сетка то есть? А то НПЦ там не задержатся и убегут туда где аи-сетка есть Ссылка на комментарий
Desertir 202 Опубликовано 18 Августа 2011 Поделиться Опубликовано 18 Августа 2011 (изменено) Если непись не на АИ сетке сразу, то будет вылет, и никуда он не убежит - не успеет. Так что если там АИ сетки нету придется лезть в СДК и делать ее там, потом Make AI-map и xr-компиляторы (кроме детальных объектов, вроде не надо). Не с целью вставить пять копеек, а с целью довести информацию... Во время моих эксперементов с логикой над Волком, я спавнил его в начале игры в домике, что стоит у него за спиной в чистом варианте игры, АИ сетки там нет, можете проверить, и знаете - вылета не было, он в "ливитирующем" состоянии передвигался, насколько я понял, к ближайшей точки АИ сетки (под ливитацией я имею ввиду скольжение модели без анимации движения, просто стоя). ColR_iT Изменено 18 Августа 2011 пользователем ColR_iT ТЧ 1.0004. SAP и Trans mod github Ссылка на комментарий
Daniar299 0 Опубликовано 18 Августа 2011 Поделиться Опубликовано 18 Августа 2011 (изменено) Всем здрасте, у меня возникла проблема при спауне НПС, Нет я его прописал нормально через all.spawn, но я хочю чтоб он сидел и например ел колбасу! но какую логику ему надо прописывать? Вот здесь собрана достаточно подробная информация о логиге НПС и не только, почитай. >>Clik Me<< ColR_iT Изменено 18 Августа 2011 пользователем ColR_iT Ссылка на комментарий
Prozone97 0 Опубликовано 18 Августа 2011 Поделиться Опубликовано 18 Августа 2011 (изменено) Как спаунить костры?(= Можно написать логико в аллспавне, а можно в кастом дате... Есть разница? Ты наверно имел ввиду в all.spawn и отдельном файле!? Если да, то конечно есть! Если логика в all.spawn, то чтобы ее подправить, нужно будет перекомпелировать его (all.spawn), а в отдельном файле, у тебя и логика на виду и подправить всегда можно, только не затрагивая путей, их в отдельный файл не перенести. ColR_iT Изменено 18 Августа 2011 пользователем ColR_iT Ссылка на комментарий
Stalkersof 183 Опубликовано 18 Августа 2011 Поделиться Опубликовано 18 Августа 2011 (изменено) Да конечно не проверял есть там сетка или нет. Я даже и незнаю как посмотреть. Буду методом тыка смотреть. Если где нпс будут себя вести неподобающе. То можно придумать на тех этапах забег на время и наспавнить там предметов разных чтоб дорогу загородить или можно спрятатать телепорт пусть ищут. И еще хотел его заставить пройтись по балке крана и упасть в телепорт. Предметы проверил предметы спавнятца там без вылетов. _Призрак_ спасибо. Чтобы просмотреть присутствие АИ сетки есть программка, называется GraphViewre, вот она: >>Click Me<< ColR_iT Изменено 18 Августа 2011 пользователем ColR_iT Freeplay Graphic Mod(FGM) Ссылка на комментарий
Ulman 5 Опубликовано 19 Августа 2011 Поделиться Опубликовано 19 Августа 2011 Люди, у меня такой вопрос, за что отвечают такие строки в скриптах? for k, v in pairs(pstor) do for n, c in pairs(l) do for inum, infop in pairs(cond.infop_set) do for inum, infop in pairs(cond.infop_check) do Если можно, по детальнее, заранее спасибо. Ссылка на комментарий
*Shoker* 322 Опубликовано 19 Августа 2011 Поделиться Опубликовано 19 Августа 2011 (изменено) Desertir С нпс вылета точно не будет, он просто пойдёт к ближаишей точке с АИ. Stalkersof Если спавнишь неписей за картой, то почти наверняка там нету АИ сетки, тогда НПС просто сквозь стены по воздуху спустятся туда, где она есть. А чтобы добавить новую сетку, нужно брать СДК, там разбирать уровень, добавлять туда свою сетку и собирать. В принципе вполне выполнимо, но для новичка будет сложно. Ulman Это "перебор", запускает цикл по кол-ву элементов в таблице. И на каждом цикле присваивает inum и infop какие то значения из таблицы. Например: tbl = { 1 = "ops", 2 = "ba", 3 = "gi", } for k, v in pairs(tbl) do <будет вызывать этот код 3 раза, по кол-ву элементов в таблице> <и при каждом вызове k будет равен 1,2,3,а V соответственно ops, ba, gi (по очереди, сперва k=1, v="ops" потом k=2, v="ba")> end http://www.lua.ru/doc/5.1.html Изменено 19 Августа 2011 пользователем *Shoker* Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
RayTwitty 509 Опубликовано 19 Августа 2011 Поделиться Опубликовано 19 Августа 2011 Artos, Что, кстати, и сделано у тебя намерено (h.draftsman = db.actor <???). Так что то, что не имеешь проблем - это пока не будешь использовать логику. Ведь не только машинки для покататься спавнятся, но и 'враждебные' БТРы ... У меня в моде логика кстати используется (ну те же ключи). Плюс еще много-много чего. На счет БТРов... Я привел код для чистой игры, если нужно чтобы каким-то тачкам хит не наносился, можно фильтровать по секции: self.object:section()~="секция". Ну понятно, это в условие пихаем. Ссылка на комментарий
Artos 99 Опубликовано 19 Августа 2011 Поделиться Опубликовано 19 Августа 2011 Shadows Перепрочти мой ответ и пойми суть: 1. Нет никакой причины давать хит заспавненной машине от имени актора, делая его 'обидчиком'. 'h.draftsman = self.object' - и логичнее и в последующем при любых раскладах не будет иметь последствий. 2. Тут разговаривают не только о твоем моде иль о чистой игре. Даже более - мы на АМК форуме и немало тех, кто именно его использует в качестве отправной точки. Т.о. есть ли смысл упираться в заведомо в 'твой локальный' случай? 3. Уже дал пояснение, что задавшись целью сократить строки кода - оптимальнее оставить 'пинок', а не хитовать. Это и для чистой игры оптимальнее. "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти