AndreySol 215 Опубликовано 20 Июня 2019 10 часов назад, Капрал Хикс сказал: вызывать функцию отображения меток отсюда... motivator_binder:net_spawn Не верно. motivator_binder это клиентский класс НПСов, а метод net_spawn вызывается при выходе неписей в он-лайн. Загрузка сэйва где нить возле бара - выход в он-лайн нескольких ДЕСЯТКОВ неписей. Соответственно, вызов твоей ф-ции - эти же несколько десятков раз. Сам понимаешь, что такое делать не гоже... 11 часов назад, Капрал Хикс сказал: Нужно отображение оружия на текущей локации. Ну вот теперь конкретное условие. Если действие одноразовое, то можно обойтись одноразовым вызовом ф-ции, которая расставит метки. Для этого неплохим местом будет метод net_spawn, но для актера - он в любом случае выходит в он-лайн один раз. В скрипте bind_stalker, function actor_binder:net_spawn(data), где-то после db.add_actor(self.object)(это запись актера в глобальную переменную в скрипте db) добавляй свою ф-цию расстановки меток. 1 Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 23 Июня 2019 41 минуту назад, Капрал Хикс сказал: function mark_binder:__init(obj) super(obj) .... здесь че то делаем end Так должно быть. Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 25 Июня 2019 11 часов назад, Капрал Хикс сказал: Наверное, стоит прописать исключения для оружия в инвентаре ГГ и у неписей, однако надо ещё придумать, как сделать это. Пока на ум приходит только обработка для ГГ и НПСов кэллбэка on_item_take, который срабатывает при появлении в инвентаре последних какого либо предмета - проверять, стоит ли на появившемся объекте известная нам метка и снимать её. Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 29 Июня 2019 7 часов назад, Norman Eisenherz сказал: при использовании оптического прицела. Когда-то давно нашел такую ф-цию, что-то в ней правил, в общем так: Скрытый текст function Get_wpn_mode(wpn_id) local sobj = alife():object(wpn_id) local table_param = {} local clsid_sobj = sobj:clsid() local np = net_packet() np:w_begin(0) sobj:UPDATE_Write(np) np:r_seek(2) -- для стволов с ПГ -- if clsid_sobj == clsid.wpn_ak74_s or clsid_sobj == clsid.wpn_groza_s then table_param["upd_grenade_mode"] = np:r_u8() end table_param["unknown1"] = np:r_u8() if table_param["unknown1"] and table_param["unknown1"] == 0 then --/ читаем общие для всего оружия параметры table_param["upd_condition"] = np:r_u8() table_param["upd_weapon_flags"] = np:r_u8() table_param["upd_ammo_elapsed"] = np:r_u16() table_param["upd_addon_flags"] = np:r_u8() table_param["upd_ammo_type"] = np:r_u8() table_param["upd_weapon_state"] = np:r_u8() table_param["upd_weapon_zoom"] = np:r_u8() table_param["upd_current_fire_mode"] = np:r_u8() -- для шотганов -- if clsid_sobj == clsid.wpn_shotgun_s or clsid_sobj == clsid.wpn_bm16_s or clsid_sobj == clsid.wpn_rg6_s then table_param["upd_ammo_ids"] = np:r_u8() end else --/ читать пакет нужно более продвинутым способом! end return table_param["upd_weapon_state"],table_param["upd_weapon_zoom"],table_param["upd_grenade_mode"] end использование: local obj_in_sl = db.actor:item_in_slot(нужный слот оружия) local weapon_state, weapon_zoom, grenade_mode = Get_wpn_mode(obj_in_sl:id()) Думаю, для твоих целей сгодится. 1 Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 29 Июня 2019 42 минуты назад, _Sk8_AsTeR_ сказал: звуки эмбиента ... например, ночью - постоянный звук сверчков... Может с таким вопросом лучше в тему СДК ? Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 30 Июня 2019 7 часов назад, _Sk8_AsTeR_ сказал: может есть скриптовый метод... Есть ф-ционал проигрывания звуков. Вот тока зачем озвучку окружения лепить скриптами? Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 30 Июня 2019 17 минут назад, _Sk8_AsTeR_ сказал: Нет мыслей куда копать? В логику копай. В логике НПСов можно задать смену гулагов по условию, можно вообще запретить занимать работы в любых гулагах. Много чего можно. Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 4 Июля 2019 9 часов назад, _Sk8_AsTeR_ сказал: таким образом имитируя в зоне бурную деятельность В радиусе 150м от ГГ. Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 8 Июля 2019 (изменено) 1 час назад, Norman Eisenherz сказал: Есть ли способ перебора только онлайн-объектов без перебора всех объектов на карте? Чем перебор объектов плох ? Если вызывать разово, по необходимости, а не вешать на апдейт в биндере актера... Если очень надо именно без перебора всех объектов, то надо смотреть в сторону регистрации он-лайновых объектов в глобальную таблицу(в том же db.script к примеру). Судя по "надо обнаружить противника" разговор идет за НПСов, значит надо доделать в xr_motivator.script, в классе биндера регистрацию неписей в нет-спавн и отрегистрацию в нет-дестрой. Там кастати есть попытка такой регистрации\отрегистрации: function motivator_binder:net_spawn(sobject) if not object_binder.net_spawn(self, sobject) then return false end db.add_obj(self.object) <- тута добавляем в таблицу .... function motivator_binder:net_destroy() local st = db.storage[self.object:id()] if st.active_scheme then xr_logic.issue_event(self.object, st[st.active_scheme], "net_destroy", self.object) end db.del_obj(self.object) <-- тута убираем из таблицы ... Тока вышеуказанные ф-ции в db.script выглядят так: function add_obj(obj) <-- пустышка end function del_obj(obj) storage[obj:id()] = nil end Надо подумать, что же в таблице хранить, и доделать ф-ции. Изменено 8 Июля 2019 пользователем AndreySol Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 9 Июля 2019 1 час назад, Norman Eisenherz сказал: сказано "база данных живых онлайновых объектов …" Ты еще не привык, что в ПЫСовском творении много чего "сказано", да не так в действительности ? Привыкай, меньше непоняток будет. 1 Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 12 Июля 2019 Такой вопросец. Вот имеем, к примеру, для некого объекта экспортированную ф-цию, допустим my_function(). Требуется такая штука: в каком то конфиге прописана эта ф-ция: func_name = my_function Надо прочитать(это понятно как сделать) и затем вызвать эту ф-цию для объекта. Т.е. как то так: local obj = npc:object("наш_объект") if obj then obj:my_function() end Подскажите, как такое сделать, если вообще возможно. 1 Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 5 Августа 2019 6 часов назад, _Sk8_AsTeR_ сказал: Экспериментировал я как-то с чем-то скриптовым Что именно делал - никому не скажу, на какой части трилогии - Кашпировский вам подскажет... За твой глаз мы все очень переживаем. Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 13 Августа 2019 12 часов назад, Full Noob сказал: Методом тыка выяснил, что проблему вызывает колбэк на вход в онлайн комплекта: Ну так выясняй дальше, у тебя в ф-ции кэллбэка всего 7 строк кода. Закомментил одну - проверил, и так пока не найдешь ошибку. Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 13 Августа 2019 6 часов назад, Full Noob сказал: так как при попытке сделать set_condition происходит краш: А ты уверен что имеется такая экспортирования ф-ция: "set_condition"? Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 21 Августа 2019 3 часа назад, Norman Eisenherz сказал: Требуется поймать начало/конец катсцены Любая кат-сцена откуда-то запускается, из логики какого-то объекта. Там и добавь скрытие индикаторов. Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 23 Сентября 2019 1 час назад, Баба ЯГА сказал: Хотелось бы понимать, а не просто копировать... А почитать соседнюю тему "Справочник по ф-циям и классам", на первой странице раздел "Создание и управление худом и пользовательским интерфейсом"? Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 23 Сентября 2019 @_Sk8_AsTeR_ local sobj = alife():object(i) - так ты получаешь серверный объект, а метод money() имеется только у клиентских. Вариантов у тебя два: или получать клиентский объект по ID(к примеру так - local obj = level.object_by_id(ID)) и для него вызывать obj:money(), или пытаться вытащить кол-во денег из нет-пакета(если оно там хранится). 1 Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 24 Сентября 2019 3 часа назад, Kirgudu сказал: pk:set(data) Все так просто? А если непись в он-лайне? Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 26 Сентября 2019 13 часов назад, Баба ЯГА сказал: Как отправить скриптово НПС Уточни, что ты под этим понимаешь? Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 28 Сентября 2019 57 минут назад, _Sk8_AsTeR_ сказал: Теперь все НПС платно отправляют СМСки в чат, ибо нефиг халявничать! Ты это о чем вообще? О ботах, которыми рулит ИИ движка? 1 час назад, _Sk8_AsTeR_ сказал: Реализована ли в НС какая-нибудь схема, где НПС в оффлайне продают ненужный лут? Ты бы спросил сначала: "А есть ли схема, где НПС в оффлайне этот лут добывают?". 2 минуты назад, Баба ЯГА сказал: но, например, нпс сидит у костра А ты подумал о том, что НПС не просто "сидит у костра", а что он находится под логикой некой работы в неком гулаге. И ты думаешь, что это нормальная идея - выдернуть скриптово его с работы из гулага? Поделиться этим сообщением Ссылка на сообщение