Это популярное сообщение. Dennis_Chikin 3 658 Опубликовано 16 Мая 2014 Это популярное сообщение. Поделиться Опубликовано 16 Мая 2014 Ковыряемся в файлах ТЧ Прежде чем писать в тему - внимательно читаем первый пост, и пользуемся поиском. Возможно, ответ на Ваш вопрос уже есть. Касательно телепатии: если Вы передаете Ваши файлы телепатическим путем - ответы будут передаваться тоже телепатически. Если Вы предлагаете угадать, отчего у Вас в подвале происходит странный стук - ответ будет передан стуком. 4 8 6 12 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Garry_Galler 7 Опубликовано 11 Февраля 2011 Поделиться Опубликовано 11 Февраля 2011 (изменено) Хантер У меня логика прекрасно работает. Использовал тот же простенький вариант, что и в статье. Вот секция машины в файле vehicles.ltx (где у меня все секции тачек прописаны - файл зарегистрирован в system.ltx) и в этой секции прописана custom_data с указанием файла логики. Машину спавнил, разумеется, скриптом. Важное условие работы схемы: в секции машины обязательно должна быть строчка script_binding = bind_physic_object.init Именно она биндит логику к каждой вышедшей в онлайн тачке. [baggi] GroupControlSection = spawn_group $spawn = "vehicles\vehicle_btr" class = SCRPTCAR cform = skeleton visual = physics\vehicles\baggi\veh_baggi.ogf actor_visual = physics\vehicles\baggi\veh_baggi.ogf ef_equipment_type = 3 ph_mass = 500 script_binding = bind_physic_object.init custom_data = scripts\car.ltx ;путь до файла с логикой ph_skeleton_airr_lin_factor = 2.0 ph_skeleton_airr_ang_factor = 0.0 ph_skeleton_hinger_factor1 = 1.0 ph_skeleton_ddelay = 15.0 ph_skel_fatal_impulse_factor = 12.0 ph_skel_shot_up_factor = 0.25 ph_after_death_velocity_factor = 0.75 Наглядный пример: После выдачи инфопоршня "actor_has_car_key". Кстати, надпись "заблокировано" можно поменять на любую другую. Изменено 11 Февраля 2011 пользователем Garry_Galler Ссылка на комментарий
Хантер 0 Опубликовано 11 Февраля 2011 Поделиться Опубликовано 11 Февраля 2011 (изменено) Всё, сенк! Всё пошло! Правда, сделал проще: убрал инфопоршни, а в логике такое прописал: [logic] active = ph_car [ph_car] usable = {=actor_has_item(niva_keys)} --------- А как сделать, чтобы один автомобиль можно было открывать либо одним ключом либо другим, не знаешь? Изменено 11 Февраля 2011 пользователем Cyclone Ссылка на комментарий
_Призрак_ 11 Опубликовано 11 Февраля 2011 Поделиться Опубликовано 11 Февраля 2011 так сделай функцию в хр_кондитионс: function test() local actor = db.actor if actor:object("niva_keys") ~= nil and actor:object("niva_keys2") ~= nil then return true else return false end и напиши: [logic] active = ph_car [ph_car] usable = {=test} Freedom Ссылка на комментарий
ColR_iT 171 Опубликовано 11 Февраля 2011 Поделиться Опубликовано 11 Февраля 2011 (изменено) Хантер, напиши условия через запятую usable = {=actor_has_item(niva_keys_1)}, {=actor_has_item(niva_keys_2)} Проверка будет происходить слева на право, если у актора появиться ключ 1, то проверка прикартиться, если его не будет, то провериться наличие ключа 2. Если напишешь так usable = {=actor_has_item(niva_keys_1) =actor_has_item(niva_keys_2)} то необходимостью станет наличие сразу двух ключей. Изменено 11 Февраля 2011 пользователем Куфзук Ссылка на комментарий
PGU_tk 9 Опубликовано 12 Февраля 2011 Поделиться Опубликовано 12 Февраля 2011 Братцы, подскажите функцию, с помощью которой можно проиграть анимку перезарядки оружия у актора https://www.youtube.com/watch?v=1h34a3CpkIc Ссылка на комментарий
ColR_iT 171 Опубликовано 12 Февраля 2011 Поделиться Опубликовано 12 Февраля 2011 PGU_tk, как вариант, ты можешь разрядить нужное тебе оружие, и потом его активировать, ГГ сам его перезарядит. Что-то на подобие такого: function actor_mast_reload() local actor = db.actor local wpn = actor:item_in_slot(2) if actor and wpn then wpn:unload_magazine() actor:activate_slot(2) actor:restore_weapon() end end только оружие должно быть по крайней мере просто в слоте. Ссылка на комментарий
Хантер 0 Опубликовано 12 Февраля 2011 Поделиться Опубликовано 12 Февраля 2011 (изменено) Подскажите, кто знает, где можно найти конфиги автомобилей с физикой, как в обливион лосте, и модели машин с открывающимися дверями. Изменено 12 Февраля 2011 пользователем Хантер Ссылка на комментарий
amik 253 Опубликовано 12 Февраля 2011 Поделиться Опубликовано 12 Февраля 2011 Привет всем! Прочитал вот такое: Глюк!!! Как исправить? Почему (сталкеры, военные, монолитовцы и т.д) когда целятся или cтреляют с далека, то смотрят в одну сторону, а пули летят в ГГ!!! Помню, пофиксено в Freeplay Start 1.2... Что там изменено и правда ли, кто в курсе? И еще такой вопрос: можно ли заменить (подменить) конфиг погоды на выбранной мной локации после какого либо действия (допустим обыск тайника убийство чего-то/кого-то)? Мой архив Сталкером не занимаюсь. Ссылка на комментарий
PGU_tk 9 Опубликовано 12 Февраля 2011 Поделиться Опубликовано 12 Февраля 2011 Куфзук, в принципе вариант, только надо еще прицепить как-то оружию выстрел или поправить где-то какой-то параметр, а то у меня гг не спешит перезаряжаться. Еще actor:restore_weapon() лишнее.. https://www.youtube.com/watch?v=1h34a3CpkIc Ссылка на комментарий
Министр 3 Опубликовано 12 Февраля 2011 Поделиться Опубликовано 12 Февраля 2011 (изменено) amik, в теме Маландринуса есть про скриптовое установление погоды, посмотри там в разделе по пространству имен level или поищи по set_weather. Изменено 12 Февраля 2011 пользователем Министр Ссылка на комментарий
ColR_iT 171 Опубликовано 12 Февраля 2011 Поделиться Опубликовано 12 Февраля 2011 (изменено) PGU_tk, по сути, если у тебя оружие уже активно, то restore_weapon ни чего не даст, но если оно спрятано!? И почему это он не спешит, при пустом магазине он вроде сам перезарежается. Если не хочет, то надо заставить его выстрелить, но вот как? Изменено 12 Февраля 2011 пользователем Куфзук Ссылка на комментарий
PGU_tk 9 Опубликовано 12 Февраля 2011 Поделиться Опубликовано 12 Февраля 2011 Куфзук, если оно спрятано, то actor:activate_slot(2) - его вытащит. >при пустом магазине он вроде сам перезаряжается да вроде я тоже так думал, но там как-то странно - если открываешь инвентарь, то он действительно сразу начинает перезаряжаться, а если ничего не делать, то и не спешит. Я проверял именно на коде почти таком же, как ты привел Еще поэкспериментирую сейчас с restore_weapon()\hide_weapon() https://www.youtube.com/watch?v=1h34a3CpkIc Ссылка на комментарий
banderos 17 Опубликовано 12 Февраля 2011 Поделиться Опубликовано 12 Февраля 2011 (изменено) amik, Исправлено совместными усилиями kstn и Р.М.А. Вот цитата поста Р.М.А. с оф. форума GSC из темы "Попытка исправления ошибок": К слову про косых сталкеров Напишу свои наблюдения, может кого наведут на мысль в чём причина. У меня в лагере новичков косят два охранника при входах, а Волк не косит, хотя сделаны они на одних и тех же схемах (walker). Однако, Волк при наставлении оружия, отыгрывает анимацию backoff, а охранники - threat. В state_lib.script эти анимации выглядят так: backoff = {weapon = "unstrapped", movement = move.stand, mental = anim.danger, bodystate = move.standing, animstate = "stand", animation = "backoff", reset = true }, threat = {weapon = "unstrapped", movement = move.stand, mental = anim.danger, bodystate = move.standing, animstate = "stand", animation = nil }, Отличия в параметрах animation и reset. Попробовал добавить в threat reset = true, разницы никакой. Тогда остаётся animation. Также я заметил, что косят сталекры, сделанные на схеме camper. В xr_camper.script можно найти ссылку на анимации "hide_sniper_fire" и "hide_fire". Эти анимации в state_lib.script: hide_fire = {weapon = "fire", movement = move.stand, mental = anim.danger, bodystate = move.crouch, animstate = "stand", animation = nil }, hide_sniper_fire = {weapon = "sniper_fire", movement = move.stand, mental = anim.danger, bodystate = move.crouch, animstate = "stand", animation = nil }, Как видно, у threat, hide_fire и hide_sniper_fire параметр animation = nil и именно, отыргывая эти анимации, npc косили. Тогда я попробовал сделать так, не убирать те строки в state_mgr.script, а изменить их следующим образом: до --' Если мы переключаемся из идущего положения в стоящее - надо задизаблить перемещение if state_lib.states[self.target_state].movement ~= move.stand and state_lib.states[state_name].movement == move.stand then self.npc:movement_enabled(false) end после --' Если мы переключаемся из идущего положения в стоящее - надо задизаблить перемещение if state_lib.states[self.target_state].movement ~= move.stand and state_lib.states[self.target_state].animation ~= nil and state_lib.states[state_name].movement == move.stand then self.npc:movement_enabled(false) end После таких изменений, сталкеры перестали косить. На мысль навело предложение kstn закомментировать строки. Изменено 12 Февраля 2011 пользователем banderos Мой вариант билдовских локаций: Мёртвый город (build 1935) и Свалка (build 2205) Ссылка на комментарий
PGU_tk 9 Опубликовано 12 Февраля 2011 Поделиться Опубликовано 12 Февраля 2011 В общем, резюмируя. (там кстати вверху была неточность - actor:restore_weapon() надо заменить на wpn:restore_weapon()). Игра с hide\restore тоже ни к чему не привела. В игре действительно, отстрел магазина приводит к моментальной перезарядке, но если делать это unload-ом или set_ammo_elapsed(0), то это просто установка такого количества патронов - перезарядку это не вызывает, для нее нужны дополнительные события (выстрел, просмотр инвентаря). А я пришел к выводу, что это не стоит того, можно решить иначе мою задумку, да и поиски уперлись. Но если кто-то подскажет, как анимацию запустить, то будет интересно "поиграться") https://www.youtube.com/watch?v=1h34a3CpkIc Ссылка на комментарий
ColR_iT 171 Опубликовано 12 Февраля 2011 Поделиться Опубликовано 12 Февраля 2011 (изменено) PGU_tk, использование wpn:restore_weapon() приведет минимум к неправильной работе, функция restore_weapon() применима исключительно для ГГ. По поводу перезарядки при использовании unload_magazine() или set_ammo_elapsed(0) возможно ты прав, по описанию, эти функции эквиваленты, они просто ставят колличество патронов в ноль и не определяют, что патронов более нет. Поэтому, для того, чтобы определить, что патронов и прям ноль, нужно сделать выстрел через скрипт, что как мне кажеться - проблематично, или я ошибаюся!? Изменено 12 Февраля 2011 пользователем Куфзук Ссылка на комментарий
PGU_tk 9 Опубликовано 12 Февраля 2011 Поделиться Опубликовано 12 Февраля 2011 (изменено) Куфзук, не хочу спорить, потому что не знаю, но у меня как раз работало так, как я сказал и не работало, если к ГГ применять, если я ничего не напутал. Но с другой стороны, если hide_weapon() еще понятно, что уберет (потенциально) тот ствол, который активен (если применять к ГГ), то какой из стволов доставать по restore_weapon() ? Слотов-то не один. С этой точки зрения логичней через ствол вызывать (поэтому я думаю, что так и есть). Про выстрелы мне тоже интересно) Поиском находил уже тут такой вопрос, но ответа не было.. Изменено 12 Февраля 2011 пользователем PGU_tk https://www.youtube.com/watch?v=1h34a3CpkIc Ссылка на комментарий
Министр 3 Опубликовано 13 Февраля 2011 Поделиться Опубликовано 13 Февраля 2011 (изменено) PGU_tk, если не ошибаюсь, то скриптом полноценный выстрел сделать нельзя, по-крайней мере для ГГ. Restore_weapon применяется для актора и вероятнее всего она достает оружие спрятанное ф-ей hide_weapon Изменено 13 Февраля 2011 пользователем Министр Ссылка на комментарий
Гость max_max_08 Опубликовано 13 Февраля 2011 Поделиться Опубликовано 13 Февраля 2011 Создал скриптовое окно, в нем есть кнопка выход, которая выполняет определенные действия при выходе. Проблема в том что окно можно закрыть клавишей Esc. Тогда нарушится работа скрипта. Возможно ли отключить ввод с клавиатуры при работе скрипта? Ссылка на комментарий
_Призрак_ 11 Опубликовано 13 Февраля 2011 Поделиться Опубликовано 13 Февраля 2011 max_max_08 Можно. Можно даже сдать так, чтобы при нажатии на esc выполнялось то что тебе нужно. Ищи функцию OnKeyboard Freedom Ссылка на комментарий
Garry_Galler 7 Опубликовано 13 Февраля 2011 Поделиться Опубликовано 13 Февраля 2011 (изменено) Действительно, max_max_08, почему тебе просто не дописать тоже самое действие и на кнопку Esc? function my_message:OnKeyboard(dik, keyboard_action) CUIScriptWnd.OnKeyboard(self,dik,keyboard_action) if keyboard_action == ui_events.WINDOW_KEY_PRESSED then if dik == DIK_keys.DIK_ESCAPE then self:on_quit() --/ по нажатию ESC - активация указанного метода end end end Отключить ввод с клавиатуры тоже, конечно, можно - через level.disable_input() - но не знаю решит ли это твою проблему. Мышь тоже, по моему, не будет работать. Изменено 13 Февраля 2011 пользователем Garry_Galler Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти