Перейти к контенту

Рекомендуемые сообщения

4 часа назад, aromatizer сказал:

который за время появления статика срабатывал бы только один раз.

А где гарантии?

Время видимости статика не нормировано ничем. Он может появиться на один фрейм, а может провисеть полчаса. Медленный апдейт в этом случае лишь повысит шанс НЕобнаружения факта появления статика. Т.е. фича будет "работать через раз". Или вообще не работать.

2 часа назад, I am Dead сказал:

Ну покажи уж

Показывалось много раз... просто в данном случае, этот инструмент "не в тему".

Пост десятилетней давности, и там же его обсуждение, с предложениями аналогов от других авторов.

  • Полезно 2

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 5.7ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий

:offtopic: Теперь то уж точно оптимизация в некоторых проектах улучшится... :dance2:

Изменено пользователем aromatizer
  • Не согласен 1
  • Сомнительно 1

Отношения между людьми- главная ценность в человеческом обществе.
Любая полученная информация- это только повод для размышлений, а не побуждение к действию.
Это должен знать каждый: уроки боевой подготовки Дяди Саши https://yadi.sk/d/60Ec2B06goLAE
Накопано и накнопано:https://yadi.sk/d/mzVY5jQEspwpt

Ссылка на комментарий

@aromatizer оффтоп, оптимизация посредством урезания как то звучит не очень... 

 

P. S Если намёк был на мои проекты - то я по максимуму везде стараюсь не мучать апдейт, задействовав другие каллбеки ( которых на огср достаточно много) оставив лишь самое необходимое что требует постоянной проверки. 

Изменено пользователем I am Dead
  • Нравится 3

Подарки

  • 2
  • Ссылка на комментарий

    Подскажите в чем проблема. Пытаюсь вывести прогресс бар для каждого слота но не могу выровнить шкалу. Пишу так:

    Скрытый текст

        local slots = {

        [1] = {100, 190},
        [2] = {330, 190},
        [4] = {330, 440},
        [6] = {170, 400},

        }

     

        for num, xy in pairs(slots) do
            local item = db.actor:item_in_slot(num)

            if item then
            local item_sect = item:section()
            local x, y, width, height, y_fix, x_fix, w_fix = axr_base.icon_new_pos(item_sect, num)

     

            --// окно
            local weapon_tex = CUIStatic()
            self:AttachChild(weapon_tex)

            local wnd_x, wnd_y = unpack(xy)
            weapon_tex:Init(wnd_x + x_fix, wnd_y + y_fix, w_fix * f_size, height * f_size)

     

            --// текстура
            weapon_tex:InitTexture("ui\\ui_icon_equipment")
            weapon_tex:SetStretchTexture(true)
            weapon_tex:SetOriginalRect(x, y, width, height)

     

            --// прогресс
            local wpn_condition_progress = 0
            local bar = xml:InitProgressBar("bar_frame", weapon_tex)
            wpn_condition_progress = item:condition()*100
            bar:SetProgressPos(wpn_condition_progress)

     

            -- имя
            local wnd_name = "repair_wpn_" .. num

            self:Register(xml:Init3tButton(wnd_name, self), wnd_name)
            self:AddCallback("repair_wpn_" ..num, ui_events.BUTTON_CLICKED, function() self:repair_wpn(num) end, self)

    Скрытый текст

        <bar_frame_ x="50" y="50" width="56" height="5" horz="1" min="0" max="100" pos="1">
            <background>
                <texture>ui_cop_Game_progress_efficiency_full</texture>
            </background>
            <min_color r="86" g="196" b="209"/>
            <middle_color r="86" g="196" b="209"/>
            <max_color r="86" g="196" b="209"/>
        <progress>
            <texture>ui_cop_item_cond</texture>
        </progress>
        </bar_frame>

    Итог: https://yadi.sk/i/AH1ZOpH45nyQXQ


    Подарки

  • Ссылка на комментарий

    @Colder Привет мне кажется что всё дело вот в чём:

    ты задаёшь координаты слотов

    9 часов назад, Colder сказал:

     local slots = {

        [1] = {100, 190},
        [2] = {330, 190},
        [4] = {330, 440},
        [6] = {170, 400},

        }

    а уже к ним привязываешь координаты прогресса

    9 часов назад, Colder сказал:

     <bar_frame_ x="50" y="50"

    соответственно получается где-то так

    9 часов назад, Colder сказал:

     local slots = {

        [1] = {100 + 50, 190 + 50},
        [2] = {330 + 50, 190 + 50},
        [4] = {330 + 50, 440 + 50},
        [6] = {170 + 50, 400 + 50},

        }

     

    • Согласен 1
    Ссылка на комментарий

    @Colder , ну всё правильно выводится: на 50 пикселей правее левого края и на 50 ниже верхнего. А ты как задумывал? То есть, где надо, чтобы была шкала?

    Изменено пользователем naxac

    Аддон для ОП-2.09.2: Яндекс/Google/GitHub

    naxac.gif


    Подарки

    Ссылка на комментарий
    3 часа назад, Colder сказал:

    Не помогло

    Что именно не помогло?

    я же сказал, что координаты прогресса у тебя жостко привязаны к координатам иконки,

    и выводятся на 50 пихелей правее и 50 ниже - от левого верхнего угла иконки,

    а так как иконки имеют разные размеры - нужно это учитывать!

    либо сдвигать прогресс на дополнительное количество пихелей - относительно иконки - для каждой иконки, 

    либо выводить прогресс по своим собственным координатам - не привязанных к иконке,

     

    • Согласен 1
    • Полезно 1
    Ссылка на комментарий
    3 часа назад, Colder сказал:

    Вот я и не могу

    Простейший вариант - чтоб не плодить костыли и не писать кучу проверок и функций

    Скрытый текст
    
    	<bar_frame_1 x="50" y="50" width="56" height="5" horz="1" min="0" max="100" pos="1">
    		<background>
    			<texture>ui_cop_Game_progress_efficiency_full</texture>
    		</background>
    		<min_color r="86" g="196" b="209"/>
    		<middle_color r="86" g="196" b="209"/>
    		<max_color r="86" g="196" b="209"/>
    		<progress>
    			<texture>ui_cop_item_cond</texture>
    		</progress>
    	</bar_frame_1>
    	
    	<bar_frame_2 x="50" y="50" width="56" height="5" horz="1" min="0" max="100" pos="1">
    		<background>
    			<texture>ui_cop_Game_progress_efficiency_full</texture>
    		</background>
    		<min_color r="86" g="196" b="209"/>
    		<middle_color r="86" g="196" b="209"/>
    		<max_color r="86" g="196" b="209"/>
    		<progress>
    			<texture>ui_cop_item_cond</texture>
    		</progress>
    	</bar_frame_2>
    	
    	<bar_frame_4 x="50" y="50" width="56" height="5" horz="1" min="0" max="100" pos="1">
    		<background>
    			<texture>ui_cop_Game_progress_efficiency_full</texture>
    		</background>
    		<min_color r="86" g="196" b="209"/>
    		<middle_color r="86" g="196" b="209"/>
    		<max_color r="86" g="196" b="209"/>
    		<progress>
    			<texture>ui_cop_item_cond</texture>
    		</progress>
    	</bar_frame_4>
    	
    	<bar_frame_6 x="50" y="50" width="56" height="5" horz="1" min="0" max="100" pos="1">
    		<background>
    			<texture>ui_cop_Game_progress_efficiency_full</texture>
    		</background>
    		<min_color r="86" g="196" b="209"/>
    		<middle_color r="86" g="196" b="209"/>
    		<max_color r="86" g="196" b="209"/>
    		<progress>
    			<texture>ui_cop_item_cond</texture>
    		</progress>
    	</bar_frame_6>
    

     

    делаем 4 прогресса - так можно двигать их независимо

     

    а чтоб это заработало 

     

    Скрытый текст
            --// прогресс
            local wpn_condition_progress = 0
            local bar = xml:InitProgressBar("bar_frame_"..num, weapon_tex)        ---- измени эту строку вот так
            wpn_condition_progress = item:condition()*100
            bar:SetProgressPos(wpn_condition_progress)

     

    100% уверенности в работоспособности нет - так как не могу проверить

    но вроде должно работать :crazy2:

    • Спасибо 1
    • Нравится 1
    Ссылка на комментарий

    Всем привет. Ознакомился с возможностями движка ОГСР, но видимо недостаточно хорошо. 

    Есть ли на этом движке возможность определить предмет на поясе и далее производить с ним какие-либо действия?

    Т.е. речь не о проверке

    local item = inventory.belt["item"]

    а именно о том, что бы заданный объект можно было хитануть, удалить и т.п.

    Изменено пользователем mole venomous

    Здесь могла быть ваша реклама.


    Подарки

  • 5
  • 2
  • 2
  • 4
  • Ссылка на комментарий

    @mole venomous , можно сделать так:

    local obj = db.actor:object("item")
    if obj and db.actor:is_on_belt(obj) then
    -- хитануть, удалить и т.п.
    end

    Или так (это подойдёт, если у актера может быть несколько предметов с секцией "item"):

    local obj
    for i = 0, db.actor:belt_count()-1 do
      obj = db.actor:item_on_belt(i)
      if obj and obj:section() == "item" then
      -- хитануть, удалить и т.п.
      end
    end
    Изменено пользователем naxac
    • Спасибо 1
    • Полезно 2

    Аддон для ОП-2.09.2: Яндекс/Google/GitHub

    naxac.gif


    Подарки

    Ссылка на комментарий

    Всем привет! Помогите разобраться. Хочу поместить в динамический худ мод NLC статик показателей ГГ . При вызове худа cтатик создается все работает но вот при закрытии удалить его ни как не получается. На get_hud():RemoveCustomStatic ни как не реагирует.

    Скрытый текст

    local function getSt(text, alpha, red, green, blue)
        alpha = (alpha<0 and 0) or (alpha>10 and 10) or alpha
        local param = 10 - math.floor(alpha + 0.5)
        text = string.sub(text, 1) .. string.format("%1.0f%%", alpha*10)
        alpha = 250 - param*10
        return {text, alpha, red, green, blue}
    end


        local function show()
        local hud = get_hud()
        local custom_static
        local tbl = {
    ["actor_health"]  =    getSt("Здоровье:", db.actor.health *10,  0, 255,   0),                            
    ["actor_psy_health"] =getSt("Психика:", db.actor.psy_health    *10,   0, 250, 255),
    ["actor_satiety"] =   getSt("Голод:", 10 - db.actor.satiety    *10, 255, 155,   0),
    ["actor_radiation"] = getSt("Облучение:", db.actor.radiation    *10, 255, 255,   0),
    ["actor_sleep"] =   getSt("Усталость:", nlc_vars.gg_need_sleep    /25, 255, 255, 255),}
        for k,v in pairs(tbl) do
            custom_static = hud:GetCustomStatic(k)
            if custom_static == nil then
                     hud:AddCustomStatic(k, true)
            elseif v then
                        custom_static:wnd():SetText(v[1])
                custom_static:wnd():SetTextColor(v[2],v[3],v[4],v[5])
              end
        end
    end

     

    Ссылка на комментарий

    @bastorиз очевидного: не вижу кода удаления статика, только добавления (я ж не телепат и не "крутой хацкер"!); также, если у тебя GetCustomStatic(k), то и RemoveCustomStatic должен иметь параметр-указатель кого-что удалять (не всё же подряд и не случайный!)

    Изменено пользователем Black_Raven_03
    Скрытый текст

    AMD FX-8100 (Bulldozer) , 16GB DDR3-1600, AFOX GeForce GTX1050Ti и нормально сталкерим в НА5.1, НА7, OGSE-0693, OGSR, НС2016, OLR, OFFLIFE, CoC, LADC, СГМ, "Возвращении в Зону", Аномали, ЧН ОГСМ!

    Мозг состоит на 80 процентов из жидкости, и мало того, что она тормозная, так многим еще конкретно не долили...@Denikius136
    Black_Raven.gif
     

    Ссылка на комментарий
    1 час назад, Black_Raven_03 сказал:

    должен иметь параметр-указатель кого-что удалять

    Разобрался уже статик не удалялся потому что выполнялся внутри функции  худа вынес его в отдельный скрипт и все заработало.

    • Согласен 1
    • Полезно 1
    Ссылка на комментарий

    День добрый товарищи. У меня вопрос, вот какого плана: Как установить метку на предмет, если использовать «Рандомный спавн объектов» от тов. Singapur22?

    Пример функции:

    function my_spawn()
    local tbl = {
    {129.204,-6.337,-12.101,427496,133},
    {101.002,-7.632,-4.966,398683,116},
    {106.678,-7.494,8.702,406288,118}
    }
    local items = {
    'af_medusa',
    'af_vyvert',
    'af_blood'
    }       
    xr_effects.uni_random_spawn(items, tbl, kol)
    end

     

    Pir%40t%40s.gif

    Ссылка на комментарий

    Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

    Комментарии могут оставлять только зарегистрированные пользователи

    Создать аккаунт

    Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

    Зарегистрировать новый аккаунт

    Войти

    Есть аккаунт? Войти.

    Войти
    • Недавно просматривали   0 пользователей

      Ни один зарегистрированный пользователь не просматривает эту страницу.

    AMK-Team.ru

    ×
    ×
    • Создать...