Jump to content

DNL291

Retired Staff
  • Posts

    3,875
  • Joined

  • Days Won

    67

Everything posted by DNL291

  1. joinPlayerShowName = guiCreateLabel(0.89, 0.00, 0.11, 0.05, "ahoj " .. getPlayerName(playerName), true)
  2. DNL291

    Fix Code

    for _, playersP in ipairs ( getPlayersInTeam ( getTeamFromName ( "Police" ) ) ) do createBlipAttachedTo ( playersP , 0 , 2 , 0 , 0 , 255 , 255 ) end You had put 'playerP' instead of 'playersP'.
  3. Neste tutorial, vou abordar sobre o uso da função guiGetScreenSize. E também aplicando-a com uma matemática simples para que os elementos da GUI (Interface Gráfica do Usuário) e DX possam caber na tela em todas as resoluções. Obtendo o tamanho da tela Esta função irá retornar dois valores que são float, estes dois contém a largura e altura da tela, respectivamente. Você pode verificar se a sua resolução está baixa ou não, com a largura e altura da tela que serão retornadas pela função. Por exemplo, se a largura for inferior a 640 e a altura inferior a 480, isso quer dizer que sua resolução está baixa. Você pode fazer o mesmo, se quiser verificar se a resolução da tela está maior ou menor do que você deseja. Ajustando elementos GUI e DX em todas resoluções com guiGetScreenSize() Valores relativos e absolutos Para ajustar um elemento GUI ou DX em todas as resoluções (gui neste caso), primeiramente, você deve saber se os valores dele são absolutos ou relativos, isso se aplica para um elemento gui. Isso significa que se for colocado true no argumento relative, os tamanhos e posições serão relativos, e portanto, os valores X, Y, largura e altura devem estar entre 0 e 1 num tipo de valor que é float. Ex: 0.555 ou 0.525 ou 0.5 ou 0.095 - Valor relativo. Desta forma, 0.5 representa o ponto do centro da tela, isto corresponde a 50% entre um canto e outro canto da tela. Isto se aplica tanto para os argumento X e Y, quanto para a largura e altura. Por exemplo, se o argumento width (largura), tiver um valor de 0.5, o element gui terá um tamanho da metade da largura da tela. Se for colocado false no argumento relative, isso significa que os tamanhos e posições serão absolutos. Os valores absolutos são calculados como o número total de pixels do canto superior esquerdo de seu elemento pai, se nenhum elemento pai for especificado, o pai neste caso é a própria tela. Numa resolução de tela de 1280x800 (1280 é a largura e 800 a altura), uma posição X de 640 representará o ponto central da tela. Assim como X sendo um valor de 320 (1/4 de 1280), representará 25% entre o canto esquerdo da tela e o ponto inicial do elemento GUI (ou outro). Você pode optar pelo uso de valores relativos e absolutos, colocando true ou false no argumento relative. Obviamente, colocando true estará usando valores relativos, e false valores absolutos. Você pode converter valores absolutos para relativos com esta função: E se quiser converter relativos para absolutos: Criando uma janela simples Neste exemplo, será escrito um código que criará uma janela na gui, numa resolução de 1280x800 usando posições absolutas, sem ajustá-la com a função guiGetScreenSize. addEventHandler("onClientResourceStart", resourceRoot, function() myWindow = guiCreateWindow(452, 212, 376, 375, "Janela Não ajustada para todas resoluções", false) end ) Ajustando a janela para caber em todas as resoluções Primeiramente, vamos criar duas variáveis que irão retornar os valores da função guiGetScreenSize. local sWidth, sHeight = guiGetScreenSize() sWidth = Largura da tela sHeight = Altura da tela Em seguida, iremos pegar o valor de X que é 452, e dividir por sWidth. O resultado será: 0.353. Assim como o X, vamos dividir o Y, mas agora pela variável sHeight. Sendo assim, ficará 212 dividido por sHeight. O resultado será: 0.265. A mesma coisa será feita com os valores width (largura) e height (altura). Eles serão divididos por sWidth e sHeight, respectivamente. Portanto, firará assim: 376 dividido por sWidth: 0.293. 375 dividido por sHeight: 0.468. Depois disso, vamos pegar as variáveis da função guiGetScreenSize (sWidth e sHeight) e os resultados dados pela divisão entre os valores e o tamanho da tela, e multiplicá-los. Iremos aplicar isso no código anterior, alterando-o para ajustar em todas as resoluções. Portanto, o código ficará assim: addEventHandler("onClientResourceStart", resourceRoot, function() local sWidth, sHeight = guiGetScreenSize() myWindow = guiCreateWindow(sWidth*0.353, sHeight*0.265, sWidth*0.293, sHeight*0.468, "Janela ajustada para todas resoluções", false) end ) Note que o terceiro e o quarto argumento também estão sendo ajustados para todas as resoluções. Neste caso, o tamanho da janela também será ajustado conforme a sua resolução. Feito tudo isso, sua janela já estará ajustada em todas as resoluções. Você também pode fazer isso com texto e retângulo DX e elementos da GUI. Além de usar a função guiGetScreenSize para verificar sua resolução, você pode ajustar qualquer coisa que esteja precisando (de ajustar) para todas as resoluções. Obs: Você pode ignorar os argumentos width e height se quiser manter o tamanho original do elemento da interface. Além disso, os elementos filhos de um elemento GUI, podem não ficarem visíveis se não tiverem a largura e altura adaptada junto à janela.
  4. You can use setTimer, if you think the sound should start later.
  5. 1) getTeamName() getPlayerTeam() -- Use em uma condição. -- Ex: if getTeamName(getPlayerTeam(thePlayer)) == "Policia Militar" then ... end 2) isGuestAccount() -- Opcional isObjectInACLGroup() getAccountName() getPlayerAccount() aclGetGroup() -- Use em uma condição também. -- Ex: --[[ if (isGuestAccount(getPlayerAccount(thePlayer)) == false) then local accountname = getAccountName(getPlayerAccount(thePlayer)) if isObjectInACLGroup("user."..accountname, aclGetGroup("Admin")) then ... end end ]] 3) createColRectangle() getTeamName() getPlayerTeam() outputChatBox()
  6. Tente enviar os recursos zipados. Você recebe alguma mensagem de erro no chatbox do servidor? Como "CRC mismatch". Tem sites de hospedagem de arquivos que são melhores, pesquise por bons sites. Quanto ao uso da tag, não vejo nenhum erro na forma que você colocou.
  7. Try this: Client local msg = "" local player = nil local x,y = guiGetScreenSize() function drawMessage() local scale = 1.2 local font = "default-bold" h = dxGetFontHeight(scale, font) if player == nil then dxDrawColorText("#ff9900[server]#ffffff " .. msg,500, -1,x,250, tocolor(255,255,255),scale,font) else dxDrawColorText("#FF9900[server]#ffffff " .. msg ,500, -1,x,250, tocolor(255,255,255),scale,"default-bold") end end addEventHandler("onClientRender",getRootElement(),drawMessage) function newmsg(new) msg = tostring(new) player = localPlayer end addEvent("newmsg",true) addEventHandler("newmsg",getRootElement(),newmsg) function amoff() removeEventHandler("onClientRender", getRootElement(), drawMessage) end addEvent("amoff", true ) addEventHandler("amoff", getRootElement(), amoff) function rdx(msg) removeEventHandler ( "onClientRender", getRootElement(), drawMessage ) end addEvent("mR", true ) addEventHandler("mR", getRootElement(), rdx) function dxDrawBorderedText(text, xpos, ypos, w, h, color, scale, font) dxDrawText ( text, xpos - 1, ypos - 1, w - 1, h - 1, tocolor ( 0, 0, 0, 255 ), scale, font ) -- black dxDrawText ( text, xpos + 1, ypos - 1, w + 1, h - 1, tocolor ( 0, 0, 0, 255 ), scale, font ) dxDrawText ( text, xpos - 1, ypos + 1, w - 1, h + 1, tocolor ( 0, 0, 0, 255 ), scale, font ) dxDrawText ( text, xpos + 1, ypos + 1, w + 1, h + 1, tocolor ( 0, 0, 0, 255 ), scale, font ) dxDrawText ( text, xpos - 1, ypos, w - 1, h, tocolor ( 0, 0, 0, 255 ), scale, font ) dxDrawText ( text, xpos + 1, ypos, w + 1,h, tocolor ( 0, 0, 0, 255 ), scale, font ) dxDrawText ( text, xpos, ypos - 1, w, h - 1, tocolor ( 0, 0, 0, 255 ), scale, font ) dxDrawText ( text, xpos, ypos + 1, w, h + 1, tocolor ( 0, 0, 0, 255 ), scale, font ) dxDrawText ( text, xpos, ypos, w, h, color, scale, font) end function dxDrawColorText(str, ax, ay, bx, by, color, scale, font, alignX, alignY) bx, by, color, scale, font = bx or ax, by or ay, color or tocolor(255,255,255,255), scale or 1, font or "default" if alignX then if alignX == "center" then ax = ax + (bx - ax - dxGetTextWidth(str:gsub("#%x%x%x%x%x%x",""), scale, font))/2 elseif alignX == "right" then ax = bx - dxGetTextWidth(str:gsub("#%x%x%x%x%x%x",""), scale, font) end end if alignY then if alignY == "center" then ay = ay + (by - ay - dxGetFontHeight(scale, font))/2 elseif alignY == "bottom" then ay = by - dxGetFontHeight(scale, font) end end local alpha = string.format("%08X", color):sub(1,2) local pat = "(.-)#(%x%x%x%x%x%x)" local s, e, cap, col = str:find(pat, 1) local last = 1 while s do if cap == "" and col then color = tocolor(getColorFromString("#"..col..alpha)) end if s ~= 1 or cap ~= "" then local w = dxGetTextWidth(cap, scale, font) dxDrawBorderedText(cap, ax, ay, ax + w, by, color, scale, font) ax = ax + w color = tocolor(getColorFromString("#"..col..alpha)) end last = e + 1 s, e, cap, col = str:find(pat, last) end if last <= #str then cap = str:sub(last) dxDrawBorderedText(cap, ax, ay, ax + dxGetTextWidth(cap, scale, font), by, color, scale, font) end end Server addEventHandler("onPlayerLogin", root, function(_,account) if isObjectInACLGroup( "user."..getAccountName(getPlayerAccount(source)), aclGetGroup('Server') ) then bindKey(source, "o","up","chatbox","[server]") end end ) addEventHandler("onResourceStart",getResourceRootElement(getThisResource()), function() for i,v in ipairs(getElementsByType('Player')) do local acount = getPlayerAccount(v) if isObjectInACLGroup("user."..getAccountName(acount), aclGetGroup('Server')) then bindKey(v, "o","up","chatbox","[server]") setCameraMatrix(source, 1468.8785400391, -919.25317382813, 100.153465271, 1468.388671875, -918.42474365234, 99.881813049316) end end end ) addEventHandler("onPlayerJoin", root, function() setTimer( function() if isObjectInACLGroup("user."..getAccountName(getPlayerAccount(source)), aclGetGroup('Server')) then bindKey(source, "o","up","chatbox","[server]") setCameraMatrix(source, 1468.8785400391, -919.25317382813, 100.153465271, 1468.388671875, -918.42474365234, 99.881813049316) end end, 500, 1 ) end ) function onAdminChat(player, _, ... ) local tWords = { ... } local tMessage = table.concat(tWords, " ") triggerClientEvent("newmsg",player,tMessage) end addCommandHandler("[server]", onAdminChat)
  8. Pode informar como você está colocando o link na tag "httpdownloadurl"? Também será útil se você falar como você hospedou os recursos que serão baixados.
  9. Tente usando guiSetEnabled e desabilite a imagem-GUI que foi criada. Se for imagem criada em DX, use a função removeEventHandler e remova o evento ligado à função. Use destroyElement se quiser excluir essa imagem.
  10. Se você quer criar um marcador, use a função createMarker (veja sobre o uso dela no Wiki). E createPickup para criar um elemento pickup. As coordenadas destes elementos já são definidos nos argumentos da função. Use setElementPosition para definir a posição de um jogador. Leia o MTA Wiki sempre que precisar de alguma informação sobre uma função do MTA ou qualquer coisa relacionada que seja.
  11. São as cores, vermelha, verde, azul respectivamente. Elas serão usadas para definir a cor do texto no chatBox. O outro código estará funcionando também, mas há o elemento player que não foi definido. O texto vai sair para todos os jogadores por padrão, e a cor também será padrão. Tem um savesystem que requer direitos para dar kick no jogador quando ele sair da conta, certifique-se que você esteja usando ele e dê direitos para o recurso dar kick quando o jogador sair da conta.
  12. O código de GMorte tem um erro, thePlayer não está definido no parâmetro. Tente isso: --========== PM --Carros local object = createObject(987,1592.4000244141,-1638.4200439453,12.5,0,0,180) function abrirportao(sourcePlayer) moveObject(object,5000,1592.4000244141,-1638.4200439453,6) outputChatBox("#F70A0A[info]#FFFFFFPortão da PM Aberto.", sourcePlayer, 255, 255, 255, true) end addCommandHandler("abrirpm2", abrirportao) function fecharPortao(sourcePlayer) moveObject(object,5000,1592.4000244141,-1638.4200439453,12.5) outputChatBox("#F70A0A[info]#FFFFFFPortão da PM Fechado.", sourcePlayer, 255, 255, 255, true) end addCommandHandler("fecharpm2", fecharPortao)
  13. O evento onPlayerQuit estava faltando ')' para fechar a função addEventHandler. Tente novamente com o código que eu editei acima.
  14. It should work. Make sure that 'MilitaryCount' is really returning the players in the team.
  15. MilitaryN = guiCreateLabel(104, 427, 70, 19, MilitaryCount, false, TeaSelectorWin) guiLabelSetColor(MilitaryN, 106, 105, 109) Or: guiSetText(MilitaryN, MilitaryCount)
  16. Enquanto mostrar as portas fechadas no console, quer dizer que elas continuam fechadas ou no firewall ou no site de configuração do modem.
  17. Como iremos lhe dizer como corrigir os skins, se você não diz qual é o problema. Pesquise pela community.multitheftauto.com sempre que precisar de um recurso.
  18. Lembre-se que ao desinstalar o seu GTA, você deve deletar as antigas pastas que tiverem no local de instalação do GTA, isso no seu caso.
  19. Como dito por manawydan, você pode usar a função setTimer e uma variável para definir um valor booleano que irá permitir/negar o uso do comando. Use uma tabela para definir a boolean para para permitir o uso de cada jogador, se for variável irá afetar todos os jogadores. Além disso, o seu código não vai funcionar porque tem erros. local kitarmasCommand = {} local tempo = 60000 addCommandHandler("kitarmas", function(source) if (kitarmasCommand[source] and kitarmasCommand[source] == false) then outputChatBox("Aguarde 1 minuto para usar este comando novamente", source, 225, 0, 0) return end giveWeapon(source, 4, 200, true) giveWeapon(source, 24, 200, true) setTimer( function() kitarmasCommand[source] = false end, tempo, 1 ) end ) addEventHandler("onPlayerQuit", root, function() if kitarmasCommand[source] then kitarmasCommand[source] = nil end end )
  20. 'vehicle' should be returning nil.
  21. Certifique-se que você esteja executando a última versão do MTA.
  22. Pressione a tecla 'r' para recarregar a arma. Se não funcionar, deve ser o recurso parado.
  23. Não é simples usar uma imagem estática e move-la como uma janela. Você tem que entender mais sobre Lua para poder fazer isso.
  24. Stolen: https://community.multitheftauto.com/ind ... ts&id=7268 DONE
×
×
  • Create New...