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 447 Опубликовано 12 Октября 2018 Поделиться Опубликовано 12 Октября 2018 @Fenrir02, как вариант - можно фонарику написать биндер и сохранять состояние через него (методы save/load), а на нет-спавне каждый раз устанавливать сохраненное состояние. Либо сделать похожее, добавив фонарику скриптовый серверный класс и сохранять через него (методы STATE_Read/STATE_Write). 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
mole venomous 3 433 Опубликовано 12 Октября 2018 Поделиться Опубликовано 12 Октября 2018 Вот и я тут с вопросами... Возможно ли задать предмету (в частности оружию) состояние, заспавнивая его из инвентаря (путём use_object)? Здесь могла быть ваша реклама. Ссылка на комментарий
Kirgudu 1 217 Опубликовано 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 433 Опубликовано 12 Октября 2018 Поделиться Опубликовано 12 Октября 2018 48 минут назад, Kirgudu сказал: Странный вопрос С коллбеками и спауном всё понятно. Интересовало то, как задать итему состояние (нанести хит или указать кондишн) - собственно, сам код, как это сделать любым доступным способом. Вроде того, как мы задаём некоторые пар-тры НПС, не прибегая к all.spawn. Теперь всё ясно, спасибо. Здесь могла быть ваша реклама. Ссылка на комментарий
Norman Eisenherz 316 Опубликовано 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 447 Опубликовано 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()". Можно ли как-нибудь переделать функцию для работы без правки движка? Важнейшая задача цивилизации - научить человека мыслить. Ссылка на комментарий
naxac 2 447 Опубликовано 17 Октября 2018 Поделиться Опубликовано 17 Октября 2018 @Fenrir02, нет. Нужны и другие методы: play_hud_animation, is_actor_sprinting, get_hud_item_state. Без них ничего работать не будет. Особенно без play_hud_animation, который, собственно, анимацию и проигрывает. 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
Serge_888 114 Опубликовано 30 Октября 2018 Поделиться Опубликовано 30 Октября 2018 Вопросики вылезли. Последний раз скрипты редактировал лет 8 назад. Помогите кто может. Делал для ЗП магазинный гранатомёт с отъёмным магазином на основе wpn_rg6. Отключил tri_state_reload и добавил anm_reload, что бы X-Ray не ругался. Вроде заработало, но по исчерпанию 1-го магазина переставал стрелять, несмотря на перезарядку. Тогда сделал маленький квадратик в инвентарь, что бы можно было положить в быстрый слот (F1-F4) и на его использование повесил скрипт, который удаляет оружие из игры и тут же выдаёт такое-же только новое. Помогло. Но счастье было не полным. Не срабатывает очистка магазина. Заполнение неполным количеством зарядов. При удалении оружия из активного слота, оно исчезает почти мгновенно. Хотелось бы помедленнее, но попытка запустить анимацию тоже не сработала. Подскажите, где накосячил? Скрытый текст local n_act_slot = db.actor:active_slot() local sm_act_item = db.actor:item_in_slot(n_act_slot) -- --> wpn_fn2000_nimble (based on rg6) <=--------------------------------------- if sm_act_item and ("wpn_fn2000_nimble"==sm_act_item:section()) then -- Условие срабатывания local cur_ammo_mag = sm_act_item:get_ammo_in_magazine() cur_ammo_mag = 4 -- для теста local cond = sm_act_item:condition() local oItem = db.actor:object(sm_act_item:section()) -- db.actor:hide_weapon() -- Прячет и Запрещает доставать оружие(слишком быстро) -- db.actor:active_item:play_hud_animation(system_ini():"wpn_rg6m_hud","anm_hide",true) -- ^-- почему не работает ??? alife():release(alife():object(oItem:id()),true) alife():create("wpn_fn2000_nimble", vector(), 0, 0, db.actor:id()) sm_act_item = db.actor:item_in_slot(n_act_slot) sm_act_item:unload_magazine() -- <- не работает :-( почему? db.actor:item_in_slot(n_act_slot):set_ammo_elapsed(7) -- <- тоже не работает. Заранее спасибо. Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти