Jump to content

DNL291

Retired Staff
  • Posts

    3,875
  • Joined

  • Days Won

    67

Everything posted by DNL291

  1. Seria útil se você mostrasse qual a mensagem de aviso que mostra. Tente verificando se elementWeaponBack[source] é um elemento com isElement.
  2. Use dxDrawImage. Quanto à queda de FPS, presumo que tenha sido o uso da função guiCreateStaticImage no evento onClientRender.
  3. A sintaxe é: createvehicle . Pode ser que o ID do veiculo esteja errado. Verifique também se o script está como server-side no meta.xml.
  4. Seria melhor você criar o código no client-side, e não globalmente.
  5. Eu usaria funções DX para criar a interface. Neste caso aí, fica mais difícil pra atualizar as informações.
  6. Acho que não entendi a ordem do cálculo. Seria, por exemplo: 60/2 * 10; e depois 30 * 10? Escrevi aqui um código que calcula as expressões numa string, e passa para uma tabela chamada valuesToCalc. E nessa tabela, os valores são armazenados em índices diferentes, que serve para cada etapa do cálculo. A função responsável pelo cálculo é a docalcvalues - não cheguei a fazer essa parte - e ainda não testei meu código por completo. Você pode ver como funciona o meu código e usar esse método para fazer funcionar com expressões maiores. Aqui: testcalc = "5+7/2*5" local oprts = {"+","-","*","/"} local valuesToCalc = {} local startpos = 1 local hasOperator = true local function getStringOperatorCount() local total = 0 for subpos=1, #testcalc do for i,v in ipairs(oprts) do if testcalc:sub( subpos, subpos ):find( v ) then total = total + 1 end end end return total end for _,getStringOperatorCount() do for i,v in ipairs(oprts) do local curstring = testcalc:sub( startpos, #testcalc ) op = curstring:find( v ) if op then local firstValue = testcalc:sub( startpos, op - 1 ) if not tonumber(startpos) then firstValue = 0 end local function g_substring() for i, v in ipairs( oprts ) do s = testcalc:sub( op + 1, #testcalc ) if s:find( v ) then local subpos = s:find( v ) startpos = subpos return subpos - 1 end end hasOperator = false startpos = #testcalc return #testcalc end local secondValue = testcalc:sub( op + 1, g_substring() ) valuesToCalc[ #valuesToCalc + 1 ] = { values = {firstValue, secondValue}, operator = testcalc:sub( op,op ) } if not hasOperator then docalcvalues() end; end end end function docalcvalues() for i, v in ipairs(valuesToCalc) do local fnumber, snumber = v.values[1], v.values[2] local op = v.operator -- Código... outputChatBox( tostring(f)..", "..tostring(s)..", "..tostring(op) ) end end Talvez eu veja depois essa parte de calcular os valores da tabela, às vezes o primeiro valor pode retornar 0, aí só você retornar o segundo (quando for preciso).
  7. Você está usando um recurso para tooltips no servidor? Se não, você pode remover isso. E também, só para ambos os botões foi usado setElementData e guiSetFont? Tenta sem essas linhas (que usa setElementData e guiSetFont). Deixe-as comentadas com "--" na frente e faz um teste. Não tem no freeroam. A interface é criada de outra maneira mais complexa.
  8. Também usa-se o end para fechar um while do e loop-for. Tô esclarecendo só pra complementar, já que foi citado no caso de uma função e uma condição if.
  9. O código que você postou da função getCurrentFPS tá errado:
  10. A função do FPS tem erros. Código: local fps = false function getCurrentFPS() -- Setup the useful function return fps end local function updateFPS(msSinceLastFrame) -- FPS are the frames per second, so count the frames rendered per milisecond using frame delta time and then convert that to frames per second. fps = (1 / msSinceLastFrame) * 1000 end addEventHandler("onClientPreRender", root, updateFPS) Exemplo: local sx = guiGetScreenSize() local function drawFPS() if not getCurrentFPS() then return end local roundedFPS = math.floor(getCurrentFPS()) dxDrawText(roundedFPS, sx - dxGetTextWidth(roundedFPS), 0) end addEventHandler("onClientHUDRender", root, drawFPS) https://wiki.multitheftauto.com/wiki/GetCurrentFPS
  11. exports.dxscoreboard:scoreboardAddColumn( "Class" ) -- Use the 2nd argument on the server-side addCommandHandler setElementData(player, "Class", value) -- In the 3rd argument, you define "Soldier", "Capitan", etc.
  12. Essa é uma função exportada. Se você tiver usando ela fora do recurso Slothbot, você deve usar: exports.slothbot:setBotAttackEnabled(Ped1 ,enabled)
  13. Usa: if getElementHealth(theVehicle) > 500 then
  14. Set the second argument of playSound function to true. local misc = playSound("misc/map.mp3", true)
  15. Qual o problema em tentar anexar com offsets aleatórias só pra ver como funciona? E depois você pode ir movendo o objeto pro local que deseja. Para saber sobre os eixos X,Y e Z, leia isto: http://pt.wikipedia.org/wiki/Sistema_de ... cartesiano No 1º exemplo da função getElementMatrix no MTA Wiki, tem uma função que obtém uma posição a partir de offsets do veículo. Dessa forma, você poderá calcular a posição para anexar o objeto.
  16. Use getElementData no script de desligar/ligar o motor do carro. Acho que vai funcionar, basta definir os dados corretamente quando a HP mudar.
  17. addCommandHandler isObjectInACLGroup -- Verifica se está no grupo "BOPE" aclGetGroup getElementsByType -- obtém os jogadores do servidor getPlayerWantedLevel -- Verifica se tem 1 estrela ou mais getPlayerName outputChatBox -- se for pra mostrar no chat, use essa função Use essas funções. Qualquer dúvida só falar aqui, boa sorte.
  18. #RooTs, Como já deixa claro nesse tópico abaixo, acusações de qualquer resource que for roubado não é permitida aqui no fórum. https://forum.multitheftauto.com/viewtopic.php?f=152&t=54447 Então, mesmo que seja de sua autoria, não importa. Voltando ao assunto, verifique os botões "Habilidades" e "Equipe", e veja se segue os mesmos padrões que os demais botões que funcionam.
  19. function setLevel(killer) if not killer then return end; local leveld = getElementData(killer,"kill.level") local sleveld = getElementData(source,"kill.level") local klevel = getElementData(killer,"Level") local kills = getElementData(killer,"Kills") local deaths = getElementData(source,"Deaths") local points = getElementData(killer,"avail.points") if (killer) and getElementType(killer) == "player" and killer ~= source then setElementData(source,"Deaths",deaths + 1) if (killer) and getElementType(killer) == "player" and killer == source then return end if tonumber(sleveld) > 1 then setElementData(source,"kill.level",tonumber(sleveld)-math.random(1,10) ) else setElementData(source,"kill.level",0) end if tonumber(klevel) <= 9 then triggerServerEvent("createText",killer) setElementData(killer,"kill.level",tonumber(leveld) + math.random(1,2)) elseif tonumber(klevel) > 9 and tonumber(klevel) <= 19 then triggerServerEvent("createText",killer) setElementData(killer,"kill.level",tonumber(leveld) + math.random(1,2)) elseif tonumber(klevel) > 19 and tonumber(klevel) <= 29 then triggerServerEvent("createText",killer) setElementData(killer,"kill.level",tonumber(leveld) + math.random(1,2)) elseif tonumber(klevel) > 29 and tonumber(klevel) < 39 then triggerServerEvent("createText",killer) setElementData(killer,"kill.level",tonumber(leveld) + math.random(1,2)) elseif tonumber(klevel) > 39 and tonumber(klevel) < 49 then triggerServerEvent("createText",killer) setElementData(killer,"kill.level",tonumber(leveld) + math.random(1,2)) elseif tonumber(klevel) > 49 and tonumber(klevel) < 59 then triggerServerEvent("createText",killer) setElementData(killer,"kill.level",tonumber(leveld) + math.random(1,2)) elseif tonumber(klevel) > 59 and tonumber(klevel) < 69 then triggerServerEvent("createText",killer) setElementData(killer,"kill.level",tonumber(leveld) + math.random(1,2)) elseif tonumber(klevel) > 69 and tonumber(klevel) < 79 then triggerServerEvent("createText",killer) setElementData(killer,"kill.level",tonumber(leveld) + math.random(1,2)) elseif tonumber(klevel) > 79 and tonumber(klevel) < 89 then triggerServerEvent("createText",killer) setElementData(killer,"kill.level",tonumber(leveld) + math.random(1,2)) elseif tonumber(klevel) > 89 and tonumber(klevel) < 94 then triggerServerEvent("createText",killer) setElementData(killer,"kill.level",tonumber(leveld) + math.random(1,2)) elseif tonumber(klevel) > 94 and tonumber(klevel) < 100 then triggerServerEvent("createText",killer) setElementData(killer,"kill.level",tonumber(leveld) + 1) end setElementData(killer,"Kills",kills + 0) triggerServerEvent("giveKillerMoney",killer) end end addEventHandler("onClientPlayerWasted",getRootElement(),setLevel)
  20. Acho que você vai ter que modificar o freeroam.
  21. O formato é ARGB. Tente: guiSetProperty( getControl(wndMain, "Morrer"), "NormalTextColour", string.format("FF%.2X%.2X%.2X", 255,0,0) ) guiSetProperty( getControl(wndMain, "Personagem"), "NormalTextColour", string.format("FF%.2X%.2X%.2X", 255,0,0) ) guiSetProperty( getControl(wndMain, "Animação"), "NormalTextColour", string.format("FF%.2X%.2X%.2X", 255,0,0) ) guiSetProperty( getControl(wndMain, "Armas"), "NormalTextColour", string.format("FF%.2X%.2X%.2X", 255,0,0) ) guiSetProperty( getControl(wndMain, "Roupas"), "NormalTextColour", string.format("FF%.2X%.2X%.2X", 255,0,0) ) guiSetProperty( getControl(wndMain, "Habilidades"), "NormalTextColour", string.format("FF%.2X%.2X%.2X", 255,0,0) ) Você também pode fazer o mesmo com as propriedades: HoverTextColour e PushedTextColour.
  22. Para mudar a cor do texto de um botão, use guiSetProperty. http://web.archive.org/web/201207060814 ... tml#Button
  23. Só colocar o tempo em milissegundo. Se não souber o que é isso, só ver no link que deixei. Se você quiser que seja 10 minutos, por exemplo, só dobrar de 300000 pra 600000, já que 300000 corresponde a 5 minutos.
  24. Bem, tudo o que sei é que no 2º argumento da função isObjectInACLGroup que deve ser o grupo da ACL, deve estar retornando false. O grupo da ACL não está retornando. Se realmente não há erro no nome do grupo, tente executando a função aclReload e reinicie o script.
×
×
  • Create New...