Jump to content

Erro na Janela


Recommended Posts

------ Janela ------ 
function MilitarArmy() 
       janelaArmy = guiCreateWindow(260,180,300,250,"",false) 
       guiWindowSetSizable(janelaArmy,false) 
       guiSetVisible (janelaArmy, false ) 
  
--label 
  
     armylabel = guiCreateLabel(15,30,300,300,"....",false,janelaArmy) 
  
---botões 
  
       botaok = guiCreateButton(10,210,135,20,"OK",false,janelaArmy) 
       botaoc = guiCreateButton(158,210,135,20,"Cancelar",false,janelaArmy) 
end 
addEventHandler( "onClientResourceStart", root, MilitarArmy) 
  
 ------ Ped e Marker------ 
  
    armyped = createPed(287, 94.12652, 1916.45544, 18.04716, 90) 
    armymarker = createMarker( 94.12652, 1916.45544, 17.04716, "cylinder", 1.5, 0, 255, 0, 170) 
    setElementFrozen ( armyped, true ) 
  
addEventHandler ( "onClientPedDamage", armyped, cancelEvent ) 
  
---- Funções ----- 
  
        function armyjob(hitElement) 
             if getElementType(hitElement) == "player" and (hitElement == localPlayer) then 
                  if not guiGetVisible(janelaArmy) then 
                       guiSetVisible(janelaArmy, true) 
                       showCursor(true) 
                  end 
             end 
        end 
addEventHandler("onClientMarkerHit", armymarker, armyjob) 
  
addEventHandler('onClientGUIClick', root, 
function () 
         if (source == botaoc ) then 
              guiSetVisible ( janelaArmy, false ) 
              showCursor ( false ) 
        if (source == botaok ) then 
             guiSetVisible ( janelaArmy, false ) 
             showCursor ( false ) 
         end 
     end 
end 
) 

n sei qual é o erro, eu aperto no botão "ok" e não fecha a janela.

Link to comment
  • Moderators
------ Janela ------ 
function MilitarArmy() 
       janelaArmy = guiCreateWindow(260,180,300,250,"",false) 
       guiWindowSetSizable(janelaArmy,false) 
       guiSetVisible (janelaArmy, false ) 
  
--label 
  
     armylabel = guiCreateLabel(15,30,300,300,"....",false,janelaArmy) 
  
---botões 
  
       botaok = guiCreateButton(10,210,135,20,"OK",false,janelaArmy) 
       botaoc = guiCreateButton(158,210,135,20,"Cancelar",false,janelaArmy) 
end 
addEventHandler( "onClientResourceStart", resourceRoot, MilitarArmy) 
  
 ------ Ped e Marker------ 
  
    armyped = createPed(287, 94.12652, 1916.45544, 18.04716, 90) 
    armymarker = createMarker( 94.12652, 1916.45544, 17.04716, "cylinder", 1.5, 0, 255, 0, 170) 
    setElementFrozen ( armyped, true ) 
  
addEventHandler ( "onClientPedDamage", armyped, cancelEvent ) 
  
---- Funções ----- 
  
        function armyjob(hitElement) 
             if getElementType(hitElement) == "player" and (hitElement == localPlayer) then 
                  if not guiGetVisible(janelaArmy) then 
                       showWindow(true) 
                  end 
             end 
        end 
addEventHandler("onClientMarkerHit", armymarker, armyjob) 
  
addEventHandler('onClientGUIClick', root, 
function () 
    if (source == botaoc ) then 
        showWindow(false) 
    elseif (source == botaok ) then 
        showWindow(false) 
    end 
end 
) 
  
function showWindow(show) 
    guiSetVisible(janelaArmy, show) 
    showCursor(show) 
end 

Você leu oque eu postei no tópico sobre o resource WantedLevel? você continua utilizando root no evento onClientResourceStart.

O correto é resourceRoot, já que você não quer que o evento seja acionado sempre que algum resource for iniciado.

Link to comment
  • Moderators

Você usou root no evento onClientResourceStart. então, o evento será acionado sempre que algum resource client-side for iniciado, ou seja o certo seria resourceRoot (variavel pre-definida de getResourceRootElement(getThisResource())). ou você também pode fazer isso:

addEventHandler("onClientResourceStart", root, function (startedResource) 
      if (startedResource == getThisResource()) then 
          ... 
      end 
end ) 

Isso é apenas para assegurar-se que o evento será acionado apenas quando esse mesmo resource for iniciado.

"onClientResourceStart": parametro, resource startedResource.

Source do evento é o resource iniciado.

Como você quer apenas acionar para quando o próprio resource for iniciado você deve usar resourceRoot

Link to comment
  • Moderators

Alguma mensagem 'sai' no debugmode, alertando erro na função setPlayerTeam?

Não sei se o elemento player (source) no argumento está correto, fora isso parece estar certo, na verdade eu nunca utilizei setPlayerTeam com o argumento de um team criado em outro script, então não posso dizer se funcionará. mas o argumento pedido é Team, então acho que funciona. verifique se pode ter algum erro no nome do team, maiúscula/minuscula.

Edit: setPlayerTeam é server-side apenas, certifique-se que não esteja usando no client-side.

Link to comment

Staff é um team já criado em outro script, não é o nome do evento mas sim o nome do team.

------ Janela ------ 
function MilitarArmy() 
       janelaArmy = guiCreateWindow(260,180,300,250,"",false) 
       guiWindowSetSizable(janelaArmy,false) 
       guiSetVisible (janelaArmy, false ) 
  
--label 
  
     armylabel = guiCreateLabel(15,30,300,300,"....",false,janelaArmy) 
  
---botões 
  
       botaok = guiCreateButton(10,210,135,20,"OK",false,janelaArmy) 
       botaoc = guiCreateButton(158,210,135,20,"Cancelar",false,janelaArmy) 
end 
addEventHandler( "onClientResourceStart", resourceRoot, MilitarArmy) 
  
 ------ Ped e Marker------ 
  
    armyped = createPed(287, 94.12652, 1916.45544, 18.04716, 90) 
    armymarker = createMarker( 94.12652, 1916.45544, 17.04716, "cylinder", 1.5, 0, 255, 0, 170) 
    setElementFrozen ( armyped, true ) 
  
addEventHandler ( "onClientPedDamage", armyped, cancelEvent ) 
  
---- Funções ----- 
  
        function armyjob(hitElement) 
             if getElementType(hitElement) == "player" and (hitElement == localPlayer) then 
                  if not guiGetVisible(janelaArmy) then 
                       showWindow(true) 
                  end 
             end 
        end 
addEventHandler("onClientMarkerHit", armymarker, armyjob) 
  
addEventHandler('onClientGUIClick', root, 
function () 
    if (source == botaoc ) then 
        showWindow(false) 
    elseif (source == botaok ) then 
        showWindow(false) 
        triggerServerEvent("armyFA",localPlayer) 
    end 
end 
) 
  
function showWindow(show) 
    guiSetVisible(janelaArmy, show) 
    showCursor(show) 
end 

function joinArmy() 
     setPlayerTeam(source,Staff) 
     setElementModel(source, 287) 
     giveWeapon ( source, 3 ) 
     setElementData( source, "Ocupação", "Forças Armadas", true ) 
     outputChatBox("Você se juntou ao grupo das Forças Armadas.",source,0,255,0) 
end 
addEvent("armyFA", true) 
addEventHandler("armyFA",root,joinArmy) 

Link to comment
function onPlayerQuit ( ) 
      local jogadoracc = getPlayerAccount ( source ) 
      if ( jogadoracc ) and not isGuestAccount ( jogadoracc ) then 
            setAccountData ( jogadoracc, "army.job", armyFA ) 
       end 
end 
  
function onPlayerLogin (_, jogadoracc ) 
      if ( jogadoracc ) then 
            local playermoney = getAccountData ( jogadoracc, "army.job" ) 
            if ( armyFA ) then 
            setElementData ( jogadoracc, "aemy.job", armyFA ) 
              end 
       end 
end 
  
addEventHandler ( "onPlayerQuit", getRootElement ( ), onPlayerQuit ) 
addEventHandler ( "onPlayerLogin", getRootElement ( ), onPlayerLogin) 

assim?

Link to comment
  • 4 weeks later...
    pizzao = setElementData( source, "Occupation", "Entregador de Pizza", true ) 
  
function pQuit ( ) 
        setAccountData(source,"job",pizzao) 
end 
addEventHandler ( "onPlayerQuit", root, pQuit ) 
  
function onPlayerLogin ( ) 
    getAccountData ( pizzao, "job" ) 
    setElementData (source, pizzao) 
end 
addEventHandler ( "onPlayerLogin", getRootElement ( ), onPlayerLogin ) 

Qual o erro?? '-'

Link to comment

Todo.

pizzao = createTeam( "Entregador de Pizza" ) 
  
function pQuit ( ) 
    local team = getPlayerTeam ( source ) 
    if ( team ) then 
        setAccountData ( source, "job", getTeamName ( team ) ) 
    end 
end 
addEventHandler ( "onPlayerQuit", root, pQuit ) 
  
function onPlayerLogin ( _, acc ) 
    local teamName = getAccountData ( acc, "job" ) 
    if ( teamName and #teamName ~= 0 ) then 
        local team = getTeamFromName ( teamName ) 
        if ( team ) then 
            setPlayerTeam ( source, team ) 
        end 
    end 
end 
addEventHandler ( "onPlayerLogin", root, onPlayerLogin ) 

Link to comment
  • 3 weeks later...

Tenta fazer isso:

  
function pQuit ( ) 
    local team = getElementData(localPlayer, "Ocupação") 
    if ( team ) then 
        setAccountData ( source, "Ocupação1", team ) 
    end 
end 
addEventHandler ( "onPlayerQuit", root, pQuit ) 
  
function onPlayerLogin ( _, acc ) 
    local teamName = getAccountData ( acc, "Ocupação1" ) 
    if ( teamName and #teamName ~= 0) then 
        local team = getElementData (source, "Ocupação") 
        if ( team ) then 
            setElementData ( source, team ) 
        end 
    end 
end 
addEventHandler ( "onPlayerLogin", root, onPlayerLogin ) 
  

Antes disso, faz assim, setElementData e setPlayerTeam, ou senão nao vai funcionar

Link to comment
  • Moderators

setAccountData na linha 5, o primeiro argumento está errado, a source do evento 'onPlayerQuit' é o jogador e não a conta.

Na função onPlayerLogin, ' #teamName ~= 0 ' não é necessário usar o operador de comprimento '#', basta usar a condition false/nil.

Não faz sentido definir novamente o mesmo valor obtido da função getElementData.

Além disso, setElementData falta o 2° argumento (key).

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

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