Jump to content

novo Poblema com bindKey


Recommended Posts

como posso color esse bind

bindKey('F7', 'down',

para abrir essa janela

local g_Window = nil 
addCommandHandler("window", 
function () 
    if g_Window then return end 
  
    g_Window = {} 
  
    local screenWidth, screenHeight = guiGetScreenSize() 
    g_Window.windowWidth, g_Window.windowHeight = 400, 315 
    local left = screenWidth/2 - g_Window.windowWidth/2 
    local top = screenHeight/2 - g_Window.windowHeight/2 
  
    g_Window.window = guiCreateWindow(left, top, g_Window.windowWidth, g_Window.windowHeight, "Interpolation on GUI", false) 
  
    g_Window.closeBtn = guiCreateButton(320, 285, 75, 23, "Close", false, g_Window.window) 
  
    guiWindowSetSizable(g_Window.window, false) 
    guiWindowSetMovable(g_Window.window, false) 
    guiSetEnabled(g_Window.window, false) 
    guiSetVisible(g_Window.window, false) 
  
    g_Window.startTime = getTickCount() 
    g_Window.startSize = {0, 0} 
    g_Window.endSize = {g_Window.windowWidth, g_Window.windowHeight} 
    g_Window.endTime = g_Window.startTime + 1000 
    addEventHandler("onClientRender", getRootElement(), popWindowUp) 
end) 
  
function on_closeBtn_clicked(button, state, absoluteX, absoluteY) 
    if (button ~= "left") or (state ~= "up") then 
        return 
    end 
  
    if not g_Window then return end 
  
    showCursor(false) 
    guiSetEnabled(g_Window.window, false) 
    guiWindowSetMovable(g_Window.window, false) 
  
    local screenWidth, screenHeight = guiGetScreenSize() 
    local posX, posY = guiGetPosition(g_Window.window, false) 
  
    g_Window.startTime = getTickCount() 
    g_Window.startSize = {g_Window.windowWidth, g_Window.windowHeight} 
    g_Window.startCenter =  
    { 
        posX + g_Window.windowWidth/2, 
        posY + g_Window.windowHeight/2, 
    } 
  
    g_Window.endSize = {0, 0} 
    g_Window.endTime = g_Window.startTime + 1000 
    g_Window.endCenter =  
    { 
        screenWidth,  
        screenHeight 
    } 
  
    addEventHandler("onClientRender", getRootElement(), popWindowDown) 
end 
  
function popWindowUp() 
    local now = getTickCount() 
    local elapsedTime = now - g_Window.startTime 
    local duration = g_Window.endTime - g_Window.startTime 
    local progress = elapsedTime / duration 
  
    local width, height, _ = interpolateBetween (  
        g_Window.startSize[1], g_Window.startSize[2], 0,  
        g_Window.endSize[1], g_Window.endSize[2], 0,  
        progress, "OutElastic") 
  
    guiSetSize(g_Window.window, width, height, false) 
  
    local screenWidth, screenHeight = guiGetScreenSize() 
    guiSetPosition(g_Window.window, screenWidth/2 - width/2, screenHeight/2 - height/2, false) 
  
    if not guiGetVisible(g_Window.window) then 
        guiSetVisible(g_Window.window, true) 
        guiBringToFront(g_Window.window) 
    end 
  
    if now >= g_Window.endTime then 
        guiSetEnabled(g_Window.window, true) 
  
        guiBringToFront(g_Window.window) 
        removeEventHandler("onClientRender", getRootElement(), popWindowUp) 
        addEventHandler("onClientGUIClick", g_Window.closeBtn, on_closeBtn_clicked, false) 
        showCursor(true) 
        guiWindowSetMovable(g_Window.window, true) 
    end 
end 
  
function popWindowDown() 
    local now = getTickCount() 
    local elapsedTime = now - g_Window.startTime 
    local duration = g_Window.endTime - g_Window.startTime 
    local progress = elapsedTime / duration 
  
    local width, height, _ = interpolateBetween (  
        g_Window.startSize[1], g_Window.startSize[2], 0,  
        g_Window.endSize[1], g_Window.endSize[2], 0,  
        progress, "InQuad") 
  
    guiSetSize(g_Window.window, width, height, false) 
  
    local centerX, centerY, _ = interpolateBetween (  
        g_Window.startCenter[1], g_Window.startCenter[2], 0,  
        g_Window.endCenter[1], g_Window.endCenter[2], 0,  
        progress, "InQuad") 
  
    guiSetPosition(g_Window.window, centerX - width/2, centerY - height/2, false) 
  
    if now >= g_Window.endTime then 
        removeEventHandler("onClientRender", getRootElement(), popWindowDown) 
        destroyElement(g_Window.window) 
        g_Window = nil 
    end 
end 

Edited by Guest
Link to comment
sim eu pensei em executeCommandHandler mais achu que nao vai da certo

Logicamente vai funcionar porém, vai chamar a função muitas vezes se o F7 for pressionado diversas vezes. Para resolver isso, você pode verificar se a janela está aberta, caso esteja, use return.

Link to comment

A função que abre o janela está diretamente no command "window". Ele pode nomear a função para chamar com addCommandHandler & bindKey, isso seria mais simples. Mas como a função está diretamente em um comando, ele pode usar a função executeCommandHandler em bindKey, que também não tem problemas.

Link to comment
  • 2 weeks later...

ajuda eu por favor como posso por return

por que coloquei um guirdlist dai buga peciso por return só nao sei como

  
  
function executeCommandbinKey() 
  
    executeCommandHandler("window") 
  
end 
  
  
bindKey("F1","up",executeCommandbinKey) 
  
local g_Window = nil 
addCommandHandler("window", 
function () 
    if g_Window then return end 
  
    g_Window = {} 
  
    local screenWidth, screenHeight = guiGetScreenSize() 
    g_Window.windowWidth, g_Window.windowHeight = 400, 315 
    local left = screenWidth/2 - g_Window.windowWidth/2 
    local top = screenHeight/2 - g_Window.windowHeight/2 
  
    g_Window.window = guiCreateWindow(left, top, g_Window.windowWidth, g_Window.windowHeight, "Interpolation on GUI", false) 
  
    g_Window.closeBtn = guiCreateButton(320, 285, 75, 23, "Close", false, g_Window.window) 
  
    guiWindowSetSizable(g_Window.window, false) 
    guiWindowSetMovable(g_Window.window, false) 
    guiSetEnabled(g_Window.window, false) 
    guiSetVisible(g_Window.window, false) 
  
    g_Window.startTime = getTickCount() 
    g_Window.startSize = {0, 0} 
    g_Window.endSize = {g_Window.windowWidth, g_Window.windowHeight} 
    g_Window.endTime = g_Window.startTime + 1000 
    addEventHandler("onClientRender", getRootElement(), popWindowUp) 
end) 
  
function on_closeBtn_clicked(button, state, absoluteX, absoluteY) 
    if (button ~= "left") or (state ~= "up") then 
        return 
    end 
  
    if not g_Window then return end 
  
    showCursor(false) 
    guiSetEnabled(g_Window.window, false) 
    guiWindowSetMovable(g_Window.window, false) 
  
    local screenWidth, screenHeight = guiGetScreenSize() 
    local posX, posY = guiGetPosition(g_Window.window, false) 
  
    g_Window.startTime = getTickCount() 
    g_Window.startSize = {g_Window.windowWidth, g_Window.windowHeight} 
    g_Window.startCenter =  
    { 
        posX + g_Window.windowWidth/2, 
        posY + g_Window.windowHeight/2, 
    } 
  
    g_Window.endSize = {0, 0} 
    g_Window.endTime = g_Window.startTime + 1000 
    g_Window.endCenter =  
    { 
        screenWidth,  
        screenHeight 
    } 
  
    addEventHandler("onClientRender", getRootElement(), popWindowDown) 
end 
  
function popWindowUp() 
    local now = getTickCount() 
    local elapsedTime = now - g_Window.startTime 
    local duration = g_Window.endTime - g_Window.startTime 
    local progress = elapsedTime / duration 
  
    local width, height, _ = interpolateBetween (  
        g_Window.startSize[1], g_Window.startSize[2], 0,  
        g_Window.endSize[1], g_Window.endSize[2], 0,  
        progress, "OutElastic") 
  
    guiSetSize(g_Window.window, width, height, false) 
  
    local screenWidth, screenHeight = guiGetScreenSize() 
    guiSetPosition(g_Window.window, screenWidth/2 - width/2, screenHeight/2 - height/2, false) 
  
    if not guiGetVisible(g_Window.window) then 
        guiSetVisible(g_Window.window, true) 
        guiBringToFront(g_Window.window) 
    end 
  
    if now >= g_Window.endTime then 
        guiSetEnabled(g_Window.window, true) 
  
        guiBringToFront(g_Window.window) 
        removeEventHandler("onClientRender", getRootElement(), popWindowUp) 
        addEventHandler("onClientGUIClick", g_Window.closeBtn, on_closeBtn_clicked, false) 
        showCursor(true) 
        guiWindowSetMovable(g_Window.window, true) 
    end 
end 
  
function popWindowDown() 
    local now = getTickCount() 
    local elapsedTime = now - g_Window.startTime 
    local duration = g_Window.endTime - g_Window.startTime 
    local progress = elapsedTime / duration 
  
    local width, height, _ = interpolateBetween (  
        g_Window.startSize[1], g_Window.startSize[2], 0,  
        g_Window.endSize[1], g_Window.endSize[2], 0,  
        progress, "InQuad") 
  
    guiSetSize(g_Window.window, width, height, false) 
  
    local centerX, centerY, _ = interpolateBetween (  
        g_Window.startCenter[1], g_Window.startCenter[2], 0,  
        g_Window.endCenter[1], g_Window.endCenter[2], 0,  
        progress, "InQuad") 
  
    guiSetPosition(g_Window.window, centerX - width/2, centerY - height/2, false) 
  
    if now >= g_Window.endTime then 
        removeEventHandler("onClientRender", getRootElement(), popWindowDown) 
        destroyElement(g_Window.window) 
        g_Window = nil 
    end 
end 

Link to comment

o problema é que cuando o player aperta o F1 que esta a window da aparece o bug para outra pessoa que esta com debug script aberto eu achu que tenque por

return 

mais nao sei como eu achu eu coloquei um guirdlist mais achu que cuando aperta o f1 tenque ter um return false ou end mais nao sei como fasso

Link to comment

Não precisa ter pressa para explicar, pode explicar o problema especifico ou mostrar o código onde possa estar o erro ?

Será que você quer dizer que tem um problema com a função bindKey, para mostrar/ocultar a janela quando o botão for pressionado ? mostre o código por favor.

Link to comment

Tente isso:

function executeCommandbinKey() 
    if g_Window.window then return end 
     
    executeCommandHandler("window") 
end 
bindKey("F1","up",executeCommandbinKey) 

Mas não entendi sua explicação muito bem.

@DNL291, o código está na primeira página do tópico.

Tinha esquecido que ele mostrou o código.

Link to comment
bindKey("F1", "down", function () 
     local isVisible = guiGetVisible() -- Check if the gui is visible 
     if(isVisible) 
          guiSetVisible(yourWindow, false) 
          showCursor(false) 
     else 
          guiSetVisible(yourWindow, true) 
          showCursor(true) 
     end 
end) 

Obs: deixei um erro proposital para evitar que você simplesmente copie o código. Portanto, leia-o, encontre o erro e tudo funcionará corretamente.

Link to comment

Amigo, isso dá. O problema é que, apesar de eu ter deixado um erro totalmente estúpido e de fácil identificação, você parece não ter lido-o e consertado.

Pelo visto, nem você mesmo sabe o que está fazendo. Copia o código, põe no arquivo e pronto, quer ver funcionar. Bom... mostra que você não tem interesse em aprender.

Link to comment
Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...