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

[SoC] Как назначить выполнение скрипта на кнопку в игре


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

Руся,

идея очень интересная и простая, но есть две маленькие дырочки:

1 во время выдачи задания на худ выводиться его название через main_task без нажатия на tab, по этому условие if hud:GetCustomStatic("main_task") and timer>1000 выполниться и, как в этом примере, ГГ использует антирад что не есть хорошо.

function send_task(actor, type, task, objective)
    if db.actor == nil then return false end
    
    --' Берем координаты из текстуры таска
    local task_texture, task_rect = get_texture_info("ui_iconsTotal_"..task:get_id(), "ui_iconsTotal_locations")
        
    --' Играем дефолтный звук
    pda_task:play(db.actor, 0, sound_object.s2d)

    local news_text = "%c[255,160,160,160]"..game.translate_string(action_descr_by_type[type]).."\\n".."%c[default]"..game.translate_string(task:get_title())

    if db.actor:is_talking() then    
        db.actor:give_talk_message(news_text, task_texture, task_rect,"iconed_answer_item")
    else
        db.actor:give_game_news(news_text, task_texture, task_rect, 0, 3000)
    end    

    if type == "new" or
        type == "update"
    then
        --' Выдать новое подзадание
        if task:get_objectives_cnt() == objective:get_idx()+1 then
            return
        end
        news_text = game.translate_string(task:get_objective(objective:get_idx() + 1):get_description())
    end

    [b]local hud = get_hud()
    hud:AddCustomStatic("main_task", true)
    hud:GetCustomStatic("main_task"):wnd():SetTextST(news_text)
    hud:GetCustomStatic("main_task").m_endTime = time_global()/1000 + 5[/b]

end

 

Способ лечения:

Закоментить строки

--local hud = get_hud()

--hud:AddCustomStatic("main_task", true)

--hud:GetCustomStatic("main_task"):wnd():SetTextST(news_text)

--hud:GetCustomStatic("main_task").m_endTime = time_global()/1000 + 5

 

2 как мне кажется если зажать tab и держать его более 1 секунды то ГГ скушает еще один антирад, что тоже не хорошо.

Способ лечения:

 

local tab = 0

function update(delta)
    local hud = get_hud()
    if hud:GetCustomStatic("main_task") then
        if tab==0 then
        do_something()
        tab = 1
        end
    else
        if tab==1 then
        tab = 0
        end
    end
end

 

переменная tab является флагом нажатия на клавишу, и сбрасывается только когда клавиша отпускается то есть main_task исчезает с худа.

 

А так очень хорошая идея.

  • Полезно 1
Возможно всё, ну или почти всё.

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

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