НаноБот 742 Опубликовано 29 Января 2015 А вот мои поделки. local actor_id = 0 local idnoparent = 65535 local con = get_console() local function log(arg) con:execute("load ~ "..string.sub(tostring(arg),1 , 200)) --con:execute("flush") end -------------------------------------------------------------- function init_item(obj) local new_binder = bind_item(obj) obj:bind_object(new_binder) end class "bind_item" (object_binder) function bind_item:__init(obj) super(obj) end function bind_item:net_spawn(data) if not object_binder.net_spawn(self, data) then return false end self.sect = self.object:section() log("bind_item:net_spawn(data) section-("..self.sect..")id-("..self.object:id()..")time-("..time_global()..")") return true end function bind_item:update(delta) object_binder.update(self, delta) local parent = self.object:parent() if parent then self.parent_id = parent:id() else self.parent_id = idnoparent end -- Здесь может быть код end function bind_item:net_destroy() if self.parent_id == actor_id and level.main_input_receiver() then log("bind_item:net_destroy()activate item!!! section-("..self.sect..")id-("..self.object:id()..")time-("..time_global()..")") -- Здесь располагаем код или функцию активации предмета. end object_binder.net_destroy(self) end Вероятно код не совсем оптимален, но я такой юзаю для активации разных предметов. Преимущество: не зависимость, кинул скрипт в папку скрипты, и всё работает, хорошо для глобальных модов, и мелких то же. ...в конце концов, важен лишь, машинный код. СТАЛКЕР только для ПК! Поделиться этим сообщением Ссылка на сообщение
НаноБот 742 Опубликовано 29 Января 2015 (изменено) 1. Просто забросить скрипт - недостаточно. Надо еще в конфиге предмета прописывать. А там может быть прописано нечто иное. Ну это само собой. 3. проверять парента на апдейте - это медленно и печально. Коллбэки срабатывают именно тогда, когда он действительно используется/передается и т.д. В основном это для всяких приборов, которые обычно в единичном экземпляре. На счёт быстродействия, вроде не сколько микросекунд выполняется, общем если предметов не много, то это лучшей вариант, ну а если их 100500, то так лучше не надо, например для всяких аптечек не годится, а для пультов очень да же годится. Хорошо бы в правленых движках этот колбек (use_item) на сам биндер предмета повесить. ЗЫ Ах да, ещё, если инвентарь открыт, и какой нибудь скрипт зачистит инвентарь ГГ (удалит этот предмет), то скрипт ложно сработает. Изменено 29 Января 2015 пользователем НаноБот ...в конце концов, важен лишь, машинный код. СТАЛКЕР только для ПК! Поделиться этим сообщением Ссылка на сообщение