Полтергейст 38 Опубликовано 10 Марта 2012 Поделиться Опубликовано 10 Марта 2012 Недавно у меня возник вопрос про активацию предметов (выбор активного) у npc. К примеру, оружие можно выбирать по слотам или напрямую через set_item(), а фонарик через enable_attachable_item(). Каким способом можно выбрать детектор (так, чтобы он работал, а не просто висел)? Пробовал через set_item - не помогло. А слот для детектора, насколько я знаю, есть только у игрока. Ссылка на комментарий
Artos 99 Опубликовано 10 Марта 2012 Поделиться Опубликовано 10 Марта 2012 (изменено) Полтергейст, а нужно ли пытаться додумывать в скриптах то, чего нет и не нужно в игре, и если потребовалось - реализуется напрямую, а не через некую "активацию"? По оружию: понятно, неписи и стреляют из него, перезаряжают, и анимация имеется вешать на плечо иль в кабуру убирать - вот и сделаны разработчиками и слоты под него и методы использования. Фонарик - тоже ясно, он светит иль нет, но уже слота не имеет, и для его включение/отключение как раз и используется метод enable_attachable_item. А вот детектор то при чем тут? Ты видел где-то в оригинальных кодах что-либо для детектора? Что тобою подразумечается под "работа детектора" в отношении именно НПС? Приаттачить детектор ты можешь точно также как и любой иной предмет (аптечку/колбасу/бутылку/...). Анимация вроде как тоже в ЧН есть - можешь запустить ее на проигрывание. Какой такой "работы" ты ожидаешь от детектора у НПС, чтобы игрок воспринимал именно как "работает активизированный детектор"? Изменено 10 Марта 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Полтергейст 38 Опубликовано 10 Марта 2012 Поделиться Опубликовано 10 Марта 2012 Какой такой "работы" ты ожидаешь от детектора у НПС, чтобы игрок воспринимал именно как "работает активизированный детектор"? Чтобы подавал звук, как у ГГ. Анимации самих НПС есть в оригинале (используются в квесте с Кругловым), только их нужно запускать скриптами. Ссылка на комментарий
Artos 99 Опубликовано 10 Марта 2012 Поделиться Опубликовано 10 Марта 2012 (изменено) Полтергейст, понятно ... модинг ради модинга ... :-( По существу: Пиши тогда аналог sr_light.script, а отсутствующее движковое включение озвучки детектора (у фонариков это вкл.света) - прикрути теми же скриптами (что не сложно). Получишь эквивалент использования/активизации аля-фонарик. Оффтопик: 1. Если учесть, что и сам актор/игрок НЕ выключает свой детектор, таская всегда в слоте, т.е. он уже всегда активен(!) - то какова же будет игра, если вблизи какой-нить аномалии и группки неписей у них начнется какофония звуков от всех детекторов? И, кстати, если неписи, как дураки, не слышат пищания акторского детектора - то возникает вопрос - а почему должен актор слышать ихние? Тогда уж и писк их КПК должен слышать и, если какие-нить плееры в игре - то и музон от каждого ... ИМХО, уж если захотелось дать в какой-то сцене озвучку чужих детекторов, то ничено не мешает к тем же скриптам запускающим анимацию с детектором в руках, пригрутить и запуск звука детекторного ... а по окончании вырубить его. Изменено 10 Марта 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
AndreySol 215 Опубликовано 10 Марта 2012 Поделиться Опубликовано 10 Марта 2012 (изменено) Вопрос по фонарику актера(ГГ) - им можно управлять скриптово: вкл\выкл, изменить параметры луча (ярче\темнее\фокус) ? Можно-ли скриптово отследить состояние - включен или выключен ? Изменено 10 Марта 2012 пользователем AndreySol Ссылка на комментарий
Artos 99 Опубликовано 10 Марта 2012 Поделиться Опубликовано 10 Марта 2012 (изменено) AndreySol О том, что многие параметры из *.ltx-конфигов предметов читаются один раз при старте игры и далее неизменны - давным давно всем (не только что начинающим) известно и об этом можно самому найти и прочитать. Параметры, которые возможно изменять можно посмотреть в секциях нет-пакетов соответствующего класса объекта. Параметров луча фонарика (ярче\темнее\фокус и т.п.) в нет-пакетах нет. О различных вариантах возможного внешнего вмешательства в память игры (xRray Extensions или аналоги) тут нет речи. Если ознакомиться со скриптом sr_light.script, то можно увидеть, что для отслеживания состояния фонарика у НПС можно проверить: oTorch:attachable_item_enabled() == true - где oTorch - собственно клиентский объект фонарика находящегося в инвентаре у НПС (если конечно он один у него, иначе перепроверяй все). Для актора нужно проверять параметр нет-пакета: torch_flags (что даст информацию и по активности ПНВ) и если нужно изменять (управлять вкл/выкл): torch_flags.Active = 1 torch_flags.NightVisionActive = 2 torch_flags.Unknown = 4 Изменено 10 Марта 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Полтергейст 38 Опубликовано 11 Марта 2012 Поделиться Опубликовано 11 Марта 2012 Artos И, кстати, если неписи, как дураки, не слышат пищания акторского детектора В том-то и дело, что слышат, просто никак не реагируют. Собственно, я только из-за этого и взялся за эту (бредовую?) затею, т.к. думаю, что разрабы не зря включили детекторы в список объектов, на звук от которых срабатывает callback.sound. Ссылка на комментарий
AndreySol 215 Опубликовано 11 Марта 2012 Поделиться Опубликовано 11 Марта 2012 В общем так я и предпологал, что с фонариком через нет-пакет работать прийдется. И еще вопрос по фонарику - используя нет-пакет можно блокировать\разблокировать включение\отключение фонарика игроком через назначенную клавишу ? Добавлено через 39 мин.: Artos, в Вашем сообщении №666057 от 27.1.2012, 10:42 есть ссылка на обновленный модуль для работы с нет-пакетами, но она устарела. Можно обновить ? Или где скачать этот модуль ? Добавлено через 48 мин.: Artos, в еще одном Вашем сообщении №634939 от 13.10.2011, 1:54 есть такое: а) В 'se_item.script' для классов оружия добавить функции чтения нет-пакетов и там брать нужные параметры с конца пакета. Учитывая, что апдейт и не част и не редок - для обсчета выстрелов этого вполне достаточно. И не требуется загружать апдейт актора. б) Где удобно выполнять мониторинг наличия активного оружия в руках ГГ и именно это оружие (ID) мониторить в 'se_item.script'. в) Отсекать перезарядки и пр. по их коллбэкам. Можно подробнее, о том что имелось в виду в пункте в) ? Ссылка на комментарий
*Shoker* 322 Опубликовано 11 Марта 2012 Поделиться Опубликовано 11 Марта 2012 (изменено) AndreySol В нет-пакете оружия есть параметр, который отвечает за состояние ствола. Где то его тут уже расписывали, где уже не знаю. Вообщем там возвращает определённую цифру когда идёт анимация зарядки, когда стрельба, когда переключение подствола и так далее. Колбека на стрельбу по моему кстати нету или он не точный - не помню, так что дополнительно надо расход патронов следить. Строгое предупреждение от модератора ColR_iT Это что это за ЗХ такое?! Изменено 11 Марта 2012 пользователем ColR_iT Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
AndreySol 215 Опубликовано 11 Марта 2012 Поделиться Опубликовано 11 Марта 2012 (изменено) Artos Вопрос по поиску модуля для работы с нет-пакетами снимается, нашел от 27.01.2012. Начал пробовать что да как, к примеру с тем же фонариком ГГ: local obj_torch = db.actor:item_in_slot(9) local se_obj = alife():object(obj_torch:id()) local pk = m_netpk.get(se_obj) -- запрос нет-пакета if pk:isOk() then local data = pk:get() -- читаем данные из нет-пакета if data and data.upd then if data.upd.torch_flags then local msg = string.format("%d", data.upd.torch_flags) news_manager.send_tip(db.actor, msg, nil, nil, 30000) end end end в результате выдает сообщение "5". Как оно связано с: torch_flags.Active = 1 torch_flags.NightVisionActive = 2 torch_flags.Unknown = 4 не понимаю. Помогите разобраться. Сообщение от модератора ColR_iT В следующий раз пост удалю. В шапке чётко написано: "К тому же удалению будут подвергаться вопросы, в которых масштабно не используются теги, для отделения кода и цитат от основного текста, а также не вписан в спойлер код размером превышающие семь строк." Изменено 11 Марта 2012 пользователем ColR_iT Ссылка на комментарий
Artos 99 Опубликовано 11 Марта 2012 Поделиться Опубликовано 11 Марта 2012 (изменено) Версия модуля нет-пакетов (m_netpk.script) была обновлена до 120202. В настоящее время актуальная версия: m_netpk 120311 (~26.6 кБ) Десятки раз повторял, что метод "тыка" при работе со скриптами - порочен. И задавать вопросы все же стОит после того как прочитаны материалы по интересующей теме. Немало параметров в игре имеет 'битовый' характер (object_flag/visual_flag/restrictor_flags/weapon_addons/...) и torch_flags тут не исключение. Т.е. важно значение каждого бита этого параметра, а не их сумма ... Изменено 11 Марта 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Tris 9 Опубликовано 11 Марта 2012 Поделиться Опубликовано 11 Марта 2012 Artos, я извиняюсь, но не могли бы вы привести пример простейшего сохранения глобальной переменной? • Dead Forgetting Zone • Мои работы. Обновление: 24.08.2012 Ссылка на комментарий
Artos 99 Опубликовано 11 Марта 2012 Поделиться Опубликовано 11 Марта 2012 (изменено) Tris, к сожалению вы даже задать такой простенький вопрос не смогли, чтобы на него можно было однозначно ответить. 1. Сохраняют/запоминают или значение или имя или и то и другое. О чем ты спрашиваешь? 2. "Сохранить" куда? - в область памяти игры, чтобы можно далее в игре воспользоваться запомненным значением? - сохранить в сэйв, чтобы после возобновления игры можно было восстановить запомненное? - сохранить еще куда-то ... во внешний файл, например иль еще куда? 3. И для чего упомянуто определение "глобальная"? Если чтобы отделить от аналогичного имени локальной переменной, то имеет смысл привести конкретный контекст кодов, в которых требуется запоминать. 4. Немаловажен и тип данных значения 'запоминаемой' переменной ... Для подобных вопросов имеется топик "Язык Lua. Общие вопросы программирования." Изменено 11 Марта 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
ColR_iT 171 Опубликовано 12 Марта 2012 Поделиться Опубликовано 12 Марта 2012 Сообщение от модератора ColR_iT Вопрос Viнt@rь и всю суть перенёс в соответствующую тему: [CoP] Ковыряемся в файлах, подобным вопросам там самое место, здесь же без кодов делать нечего... Ссылка на комментарий
Tris 9 Опубликовано 12 Марта 2012 Поделиться Опубликовано 12 Марта 2012 Artos, по порядку: Сохраняют/запоминают или значение или имя или и то и другое. О чем ты спрашиваешь? Сохранить значение. В моем случае, например число 90. "Сохранить" куда? Я думаю лучше будет сохранить в отдельный файл(скрипт) чтобы потом можно было считать необходимую переменную. Приведу свой код: damage = 100 local table_utterances = {"У вас нет консервы.","У вас нет не одной консервы.","У вас отсутствуют консервы.","Нечего открывать."} function use_knife() if damage == 0 then create_item_in_inv("knife_broken") broken_knife() --\\ это вывод сообщения он не важен. return end if db.actor:object("conserva") then remove_item_in_inv(db.actor,("conserva")) create_item_in_inv("conserva_o") create_item_in_inv("knife") if proverka_sharpening_to_zero() == false then damage = damage - 10 end damage_knife() --\\ Состояние Ножа. else create_item_in_inv("knife") news_manager.send_tip(db.actor, game.translate_string(table_utterances[math.random(#table_utterances)])) end end После использования ножа его состояние уменьшается от 100 до 90. Всё отлично, но после перезагрузки глобальная переменная сбивается, и поэтому у меня возникла необходимость сохранить ее, чтобы после очередной перезагрузке игры, нож имел состояние, которое было до перезагрузки. P.S. Вопрос тесно связан с игрой, поэтому решил писать сюда. • Dead Forgetting Zone • Мои работы. Обновление: 24.08.2012 Ссылка на комментарий
Viнt@rь 50 Опубликовано 12 Марта 2012 Поделиться Опубликовано 12 Марта 2012 (изменено) Tris, ты даже не удосужился полезть в скрипты, почти, любого мода, так как во многих из них используются функции сохранения/загрузки переменных, например: скрипты Artos`a, амк мода, и тп, включая оригинальный, пысовский, скрипт xr_logic в котором есть функции эти функции: 1.pstor_store(obj, varname, val) - сохранение переменной varname с значением val в пстор obj 2.pstor_retrieve(obj, varname, defval) - -загрузка переменной varname из пстора obj, если такой переменной нет, то вернет defval в крайнем случае, можно воспользоваться сохранением/загрузки твоей переменной пакетом, выполнять действие на сейв/лоад актора. Изменено 12 Марта 2012 пользователем Viнt@rь GUI для конвертера от бардака(всего и вся в форматы сдк) Полезный утиль-"Utilits pack(mod)" Ссылка на комментарий
AndreySol 215 Опубликовано 12 Марта 2012 Поделиться Опубликовано 12 Марта 2012 Возможно-ли перевести в офф-лайн и обратно в он-лайн объект, находящийся в слоте актера(ГГ), к примеру фонарик ? Если да, то как это правильно сделать. Ссылка на комментарий
Artos 99 Опубликовано 12 Марта 2012 Поделиться Опубликовано 12 Марта 2012 (изменено) Tris, очень советую изучать мат.часть :-) , иначе будешь изобретать велосипеды ... О том, как сохранять нужное значение в сейве почитай в ФАК'эх и, как подсказал Viнt@rь, посмотри в готовых кодах оригинальной игры и многочисленых модах. Ведь это же одно из самых простейших и персонально для тебя нет желания дублировать строки кода. Тем более, посмотрев и почитав самостоятельно, надеюсь получишь не только ответ на этот вопрос. А вот то, что ты до сих пор не знаешь того, что твоя переменная damage по сути должна соответствовать свойству предмета item:condition() - вот это жаль. Вместо того, чтобы изменять не некую искусственно придуманную переменную и вопрошать "а покажите мне как ее сохранить" - изменяй именно само состояние (износ) предмета и оно само сохранится в сэйве. Как читается/изменяется параметр состояния предмета (condition) - смотри в кодах игры, примеров немало. Заодно получишь и визуальную возможность смотреть на износ твоего ножа по соответствуюшей полоске на худе в инвентаре. Добавлено через 14 мин.: AndreySol, почему возникают такие странные вопросы по сути на пустом месте? 1. Выше для тебя же приведена ссылка на модуль нет-пакетов, особенностью которого является наличие именно алгоритма перевода объекта в оффлайн и обратно (что и в readme написано). Что мешает посмотреть коды отмеченные комментом: "Helper: switchings 'online->offline->online'" и воспользоваться ими по аналогии или даже целиком? Ведь функция do_switchings(id) и предназначена для вызовов "из вне" и требуется всего лишь передать на вход игровой ID нужного объекта для его перевода в оффлайн и обратно. 2. В теме "Справочник по классам и функциям" расписаны те же set_switch_online и set_switch_offline, во многочисленных модах, начиная с АМК v1.3x можно найти готовые примеры применения этих функций. Давайте НЕ задавать вопросов, ответы на которые можно найти самим, потратив немного своего времени и поработав немного своею головою. Тут все же и не справочное бюро и должно же быть понятно, что знания полученные осмысленно, а не по кусочным чужим подсказкам, гораздо полезнее, более полные и экономят время в дальнейшем и вам и другим. Изменено 12 Марта 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
AndreySol 215 Опубликовано 12 Марта 2012 Поделиться Опубликовано 12 Марта 2012 Выше для тебя же приведена ссылка на модуль нет-пакетов, особенностью которого является наличие именно алгоритма перевода объекта в оффлайн и обратно (что и в readme написано) А я именно этот способ и пробовал использовать, но у меня ни для объектов в слотах актера(ГГ) ни для объектов в инвентаре не получается перевести в офф-лайн и обратно в он-лайн. Потому и задал вопрос. Ссылка на комментарий
Artos 99 Опубликовано 12 Марта 2012 Поделиться Опубликовано 12 Марта 2012 (изменено) AndreySol, прежде чем дальше что-то говорить/объяснять - ответь, плз, на пару глупых вопросов: 1. А для чего переводить в оффлайн находящуюся в рюкзаке у актора, например, аптечку иль иной предмет? 2. А что ты ожидаешь увидеть (когда и где, на экране, в логе, иль еще где) в качестве - "вот предмет находится в оффлайне"? Иными словами, какую цель преследует перевод в оффлайн и обратно акторских предметов в инвентори и что для тебя является критерием: предмет ушел в оффлайн и вышел в онлайн? Изменено 12 Марта 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти