Fenrir02 199 Опубликовано 11 Октября 2018 Поделиться Опубликовано 11 Октября 2018 Подскажите, есть такая функция: Скрытый текст local item_in_slot_9 = db.actor:item_in_slot(9) if item_in_slot_9 then local t = item_in_slot_9:condition() item_in_slot_9:set_condition(t - 0.0001) if item_in_slot_9:condition() <0.01 then alife():release(alife():object(item_in_slot_9:id())) end end Если повесить её на апдейт, то предмет в соответствующем слоте со временем будет изменять состояние. Проверил, всё работает, только после загрузки сейва состояние сбрасывается. Как сохранить состояние этого предмета после загрузки? Заранее благодарю! Важнейшая задача цивилизации - научить человека мыслить. Ссылка на комментарий
AndreySol 215 Опубликовано 11 Октября 2018 Поделиться Опубликовано 11 Октября 2018 4 часа назад, Fenrir02 сказал: Как сохранить состояние этого предмета после загрузки? А что за предмет у тебя ? Ссылка на комментарий
Fenrir02 199 Опубликовано 11 Октября 2018 Поделиться Опубликовано 11 Октября 2018 (изменено) @AndreySol, Фонарик ( 9 слот ). Изменено 11 Октября 2018 пользователем Fenrir02 Важнейшая задача цивилизации - научить человека мыслить. Ссылка на комментарий
AndreySol 215 Опубликовано 11 Октября 2018 Поделиться Опубликовано 11 Октября 2018 22 минуты назад, Fenrir02 сказал: Фонарик Могу ошибаться, но судя по исходникам, изначально для фонарика не предусмотрено сохранение изменения состояния(condition). Если я не ошибаюсь, то вариантов в общем не много: - искать уже правленый\самому править движок; - попробовать вариант одновременной установки состояния клиенту через :set_condition и на серверной части через нет-пакет. Ссылка на комментарий
Fenrir02 199 Опубликовано 11 Октября 2018 Поделиться Опубликовано 11 Октября 2018 58 минут назад, AndreySol сказал: для фонарика не предусмотрено сохранение изменения состояния А какие предметы сохраняют состояние? Важнейшая задача цивилизации - научить человека мыслить. Ссылка на комментарий
AndreySol 215 Опубликовано 11 Октября 2018 Поделиться Опубликовано 11 Октября 2018 @Fenrir02 Из тех, что в слоты устанавливаются - оружие и броня. 1 Ссылка на комментарий
naxac 2 421 Опубликовано 12 Октября 2018 Поделиться Опубликовано 12 Октября 2018 @Fenrir02, как вариант - можно фонарику написать биндер и сохранять состояние через него (методы save/load), а на нет-спавне каждый раз устанавливать сохраненное состояние. Либо сделать похожее, добавив фонарику скриптовый серверный класс и сохранять через него (методы STATE_Read/STATE_Write). 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
mole venomous 3 293 Опубликовано 12 Октября 2018 Поделиться Опубликовано 12 Октября 2018 Вот и я тут с вопросами... Возможно ли задать предмету (в частности оружию) состояние, заспавнивая его из инвентаря (путём use_object)? Здесь могла быть ваша реклама. Ссылка на комментарий
Kirgudu 1 176 Опубликовано 12 Октября 2018 Поделиться Опубликовано 12 Октября 2018 Странный вопрос. Если используешь что-то в инвентаре, то предмет этот уже имеется и спавнить его не нужно. Разве что при использовании одного должно заспавниться что-то другое - тогда примерно так: function my_spawn() -- спавн в инвентаре local item = alife():create(section, vector(), 0, 0, db.actor:id()) -- или спавн где-то снаружи -- local item = alife():create(section, position, level_vertex_id, game_vertex_id) if item ~= nil then level.client_spawn_manager():add(item.id, 0, function (id, obj) obj:set_condition(condition) end) end end Понятно, что значения section, condition и др. надо где-то задать. Ну а саму функцию следует вызвать из коллбэка на использование. 1 Инструмент Ссылка на комментарий
mole venomous 3 293 Опубликовано 12 Октября 2018 Поделиться Опубликовано 12 Октября 2018 48 минут назад, Kirgudu сказал: Странный вопрос С коллбеками и спауном всё понятно. Интересовало то, как задать итему состояние (нанести хит или указать кондишн) - собственно, сам код, как это сделать любым доступным способом. Вроде того, как мы задаём некоторые пар-тры НПС, не прибегая к all.spawn. Теперь всё ясно, спасибо. Здесь могла быть ваша реклама. Ссылка на комментарий
Norman Eisenherz 286 Опубликовано 14 Октября 2018 Поделиться Опубликовано 14 Октября 2018 Здрасьте. Солянка, трансмутатор, кнопки прокрутки инвентаря: можно ли продублировать нажатие кнопки в интерфейсе прокруткой колеса мыши, и как обозначить такое событие в ui_events? [scripts\amkII_transmutator.script] -- Прикрепляем кнопку управления СкроллБаром 'налево'. … self:AddCallback("oButtonPrevLeft", ui_events.BUTTON_CLICKED, self.PreviewScrollLeft, self) Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
Graff46 598 Опубликовано 16 Октября 2018 Поделиться Опубликовано 16 Октября 2018 Решил создать скриптовый диалог на переменных, а не на ХМL (раньше так не делал): Скрытый текст function snow_end () function click() uiDia:GetHolder():start_stop_menu(uiDia, true) end local uiDia = CUIScriptWnd() local stat = CUIStatic() stat:Init(0,0,1024,768) stat:InitTexture("mod_nv\\to_sun") stat:Show(true) stat:SetStretchTexture(true) local botton = CUI3tButton() botton:Init(500,200,200,50) botton:InitTexture("ui_button_main01") uiDia:Register(stat) uiDia:Register(botton, "button_ok") uiDia:AddCallback("button_ok", ui_events.BUTTON_CLICKED, click, uiDia) level.start_stop_menu(uiDia, true) end Запускается, появляется курсор, но нет текстур, экран прозрачный (без ничего)... Ссылка на комментарий
lordmuzer 743 Опубликовано 16 Октября 2018 Поделиться Опубликовано 16 Октября 2018 (изменено) Register не добавлять элемент в окно, а только регистрирует окно как цель для сообщений. Как минимум нужно еще делать :AttachChild Изменено 16 Октября 2018 пользователем lordmuzer 1 Ссылка на комментарий
Graff46 598 Опубликовано 16 Октября 2018 Поделиться Опубликовано 16 Октября 2018 (изменено) @lordmuzer, С кнопкой беда - не реагирует на нажатие... Именно сама кнопка, она должна менять текстуры при наведении и нажатии, в моем случае при наведении меняет, а при нажатии - нет... Изменено 16 Октября 2018 пользователем Graff46 Ссылка на комментарий
lordmuzer 743 Опубликовано 16 Октября 2018 Поделиться Опубликовано 16 Октября 2018 (изменено) То есть статик диалог уже появился? По кнопке, у описания ui_button_main01 есть все нужные текстуры _e, _t, _d, _h ? Еще можно попробовать поменять Init для кнопки на такой :Init("ui_button_main01", 500,200,200,50) Изменено 16 Октября 2018 пользователем lordmuzer Ссылка на комментарий
Graff46 598 Опубликовано 16 Октября 2018 Поделиться Опубликовано 16 Октября 2018 @lordmuzer, Появился. А текстуру я взял у стандартной кнопки, у нее все есть. Ссылка на комментарий
lordmuzer 743 Опубликовано 16 Октября 2018 Поделиться Опубликовано 16 Октября 2018 Пробуй через :Init("ui_button_main01", 500,200,200,50) Вот у меня вот так вот точно работает: dlg = CUI3tButton() dlg:SetAutoDelete(true) dlg:SetWindowName("btn_trunk") dlg:SetTextST("ui_st_open_trunk") dlg:Enable(self.has_trunk) dlg:Init("ui_button_ordinary", frame_x + 5, frame_y + 40, 117, 29) self:AttachChild(dlg) Ссылка на комментарий
Graff46 598 Опубликовано 16 Октября 2018 Поделиться Опубликовано 16 Октября 2018 @lordmuzer, не заработало, но я без кнопки обошелся Ссылка на комментарий
naxac 2 421 Опубликовано 16 Октября 2018 Поделиться Опубликовано 16 Октября 2018 1 час назад, Graff46 сказал: С кнопкой беда - не реагирует на нажатие... Это у которой каллбэком функция click? Так в ней переменная класса не определена, равна нил, вот каллбэк и виснет. Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
Fenrir02 199 Опубликовано 16 Октября 2018 Поделиться Опубликовано 16 Октября 2018 Имеется такая функция: Скрытый текст local sprint = false local last_active_item_id = 0 function actor_binder:hud_sprint_animation() local active_item = self.object:active_item() if active_item and last_active_item_id ~= active_item:id() then last_active_item_id = active_item:id() sprint = false end if active_item and (active_item:is_knife() or active_item:is_missile()) then if (active_item:get_hud_item_state() == 0 and active_item:is_knife()) or (active_item:get_hud_item_state() == 2 and active_item:is_missile()) then if self.object:is_actor_sprinting() then if not sprint then active_item:play_hud_animation(system_ini():r_string(active_item:section().."_hud", "anim_idle_sprint"), true) sprint = true end elseif sprint then active_item:play_hud_animation(system_ini():r_string(active_item:section().."_hud", "anim_idle"), true) sprint = false end elseif sprint then sprint = false end end end Она должна включать анимации спринта для ножа, бинокля, гранат, болта. Но без правок движка в скриптах нет такого метода "is_knife()" или "is_missile()". Можно ли как-нибудь переделать функцию для работы без правки движка? Важнейшая задача цивилизации - научить человека мыслить. Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти