asrzkj

Members
  • Content Count

    157
  • Joined

  • Last visited

  • Days Won

    1

asrzkj last won the day on February 22

asrzkj had the most liked content!

Community Reputation

72 Popular

About asrzkj

  • Rank
    Busta
  • Birthday 23/12/1999

Details

  • Location
    São Paulo
  • Occupation
    Developer

Recent Profile Visitors

1,459 profile views
  1. Olá. Aqui está a dff e txd, para deixar a arma invisível: clique aqui
  2. Há várias formas de não carregar texturas e modelos no cache do cliente. Uma delas é usar o conteúdo do txd/dff na função engineLoadTXD. Outra forma seria usar loadstring() e pcall() juntamente com um sandbox (ambiente/environment), que seria totalmente mais seguro, porém um pouco mais complexo.
  3. Você tem duas opções: não usar o parâmetro ou pulá-lo. Acho que é melhor eu responder a sua pergunta. Faça deste jeito: addCommandHandler('veh', function(player) local x, y, z = getElementPosition(player) vehicle = createVehicle(411, x, y, z, _, _, _, 'ABC-1337') end ) Na situação acima, suponhamos que você queira apenas criar o veículo com uma placa diferente. Porém, antes do parâmetro da placa, você tem 3 outros parâmetros: Rotação X, Rotação Y e Rotação Z. Para ignorar, basta adicionar um underline (_), como no exemplo acima.
  4. local spawns = { {2926, 681, 1000}, {1876, 633, 1000}, {1193, 1125, 1000}, {1927, 2028, 1000}, {2682, 2299, 1000}, {1887, 2654, 1000}, {918, 2491, 1000} } local current = 0 function spawn(p) current = math.min(current + 1, #spawns) local x, y, z = spawns[current][1], spawns[current][2], spawns[current][3] fadeCamera(p, true) spawnPlayer(p, x, y, z, 360, 0, 0, 0) if current == #spawns then current = 0 end end addEventHandler('onPlayerWasted', root, function() setTimer(spawn, 2000, 1, source) end )
  5. Percebi isso agora, Lord. Obrigado! (edite para mim se possível, eu não tenho a função de editar nessa thread)
  6. -- client-side local canvas = Vector2(guiGetScreenSize()) local ads = { -- ['Tipo'] = {caminho do arquivo de voz, texto} ['Welcome'] = {'sounds/voice1.mp3', 'Seja bem-vindo(a) ao servidor.'}, } local messageType local voiceElement local startTick addEvent('tts:play()', true) addEventHandler('tts:play()', root, function(type) if ads[type] then if not voiceElement then local voice = fileExists(ads[type][1]) and ads[type][1] or 'https://translate.google.com/translate_tts?ie=UTF-8&tl=pt-BR&client=tw-ob&q='..string.gsub(ads[type][2], ' ', '+') messageType = ads[type][2] startTick = {getTickCount(), 8} voiceElement = playSound(voice, false) addEventHandler('onClientRender', root, draw) end else if _debug then outputDebugString('Não foi possível reproduzir o som.') end end end) function draw() if messageType ~= nil then dxDrawText(messageType, 0, 0, canvas.x, canvas.y, 0xffffffff, 1.20, 'default-bold', 'center', 'center') if startTick[1] + (startTick[2] * 1000) < getTickCount() then messageType = nil startTick = nil voiceElement = nil removeEventHandler('onClientRender', root, draw) end end end -- server-side (apenas uma base de como você chamaria o evento) triggerClientEvent(player, 'tts:play()', player, 'Welcome') Fiz esse script sem testar, deve funcionar se você usar corretamente. Se o sistema não encontrar o arquivo de som, ele irá executar a voz do Google Tradutor.
  7. engineSetModelLODDistance
  8. Tente desabilitar a colisão do objeto. -> setElementCollisionsEnabled
  9. Há um erro de lógica no seu código. Sempre que a latência do jogador estiver acima de 100, uma nova imagem será criada. Este é o porquê da imagem não estar sendo destruída. Você deve verificar se o jogador está com a imagem na tela. Fiz um código rápido, só pra mostrar. local highPing = false setTimer( function( ) if ( not highPing ) then -- // Verificar se ele não esta na tela de "ping alto". Não tem mensagem? Então passemos para a linha de baixo. if ( getPlayerPing( localPlayer ) > 100 ) then -- // O ping é maior que 100? Se sim, vamos avisar ao jogador, mostrando uma mensagem na tela. highPing = true -- // Salvar a informação de que ele está com uma mensagem na tela. addEventHandler( "onClientRender", root, show, true, "low-128" ) -- // Adicionar o evento, para que mostre a mensagem. end else -- // Se o jogador estiver na tela, então: if ( getPlayerPing( localPlayer ) <= 100 ) then -- // O ping dele é menor ou igual a 100? Se sim, podemos retirar a mensagem da tela. highPing = false -- // Salvar a informação que retiramos a mensagem da tela do jogador. O ping dele já se normalizou. removeEventHandler( "onClientRender", root, show ) -- // Remover o evento, nenhuma mensagem está sendo mostrada mais. end end end, 666, 0 ) function show() local screen = Vector2( guiGetScreenSize( ) ) dxDrawRectangle( 0, 0, screen.x, screen.y, tocolor( 32, 32, 32, 64 ), false ) dxDrawText( "Sua conexão está ruim", 0, 0, screen.x, screen.y, tocolor( 255, 255, 255, 255 ), 1.80, "clear", "center", "center" ) end
  10. Creio eu que não exista um automático. Além do mais, desculpe a pergunta mas... qual é a dificuldade de apertar TAB?
  11. Ah, desculpe. Remova o string.len(r) < 1 Não é necessário.
  12. function kikarplayer (theClient, commandName, kickedName, ...) local account = getAccountName (getPlayerAccount (theClient)) if isObjectInACLGroup ("user."..account, aclGetGroup ("Admin")) then local r = {...} if not r or string.len(r) < 1 then return outputChatBox ("#bf2e2e* Erro: /kick [nick] [motivo]",theClient,255,255,255,true) end local reason = table.concat(r," ") local kickerName = getPlayerName(theClient):gsub("#%x%x%x%x%x%x","") local kickedPlayer = getPlayerFromName(kickedName) if not isElement(kickedPlayer) then outputChatBox ("#bf2e2e* Erro: Player Invalido!",theClient,255,255,255,true) end outputChatBox ( "#c9c9c9[#1a6cefFW-INFORMA#c9c9c9]O #1a6cef" .. kickerName .. " #c9c9c9Kickou o Player #1a6cef" ..getPlayerName(kickedPlayer):gsub("#%x%x%x%x%x%x","").. "#c9c9c9 | Motivo #1a6cef" ..reason.. "#c9c9c9", getRootElement(), 255, 0, 0, true ) banPlayer ( kickedPlayer, theClient, reason ) else outputChatBox ("#bf2e2e* Erro: Você Não tem Permissão!",theClient,255,255,255,true) end end addCommandHandler ( "kick", kikarplayer )
  13. Troque isto: function setLevelLogin () local account = getPlayerAccount(source) if ( account ) then local Level = (getAccountData(account,"Level") or 0) local minutes = (getAccountData(account,"minutes") or 0) setElementData(source,"Level",Level) setElementData(source,"minutes",minutes) end end addEventHandler("onPlayerLogin",getRootElement(),setLevelLogin) Por isto: function setLevelLogin (_, account) local Level = (getAccountData(account,"Level") or 0) local minutes = (getAccountData(account,"minutes") or 0) setElementData(source,"Level",Level) setElementData(source,"minutes",minutes) end addEventHandler("onPlayerLogin",getRootElement(),setLevelLogin) O primeiro argumento da sua função getAccountData está incorreto. O evento onPlayerLogin já fornece a conta do jogador, não é necessário usar getPlayerAccount. Aliás, esta função não retorna a conta, e sim o objeto dela, no caso o jogador responsável. Se você quer obter a conta do jogador, use getAccount.
  14. local string = "12345678" local encrypt = sha256(md5(string)) outputChatBox(encrypt) Exatamente dessa forma.
  15. local _minutes = 10 -- // O salário será entregue a cada quantos minutos? function payday() for _, v in pairs(getElementsByType("player")) do if isPlayerInACL(v, "nome_da_acl") then givePlayerMoney(v, 5000) outputChatBox("Você recebeu um salário no total de 5000 R$", v, 255, 255, 255, true) end end end setTimer(payday, _minutes * 60000, 0) function isPlayerInACL(player, acl) local accountName = getAccountName(getPlayerAccount(player)) if accountName ~= "guest" and type(aclGetGroup(acl)) == "userdata" then return isObjectInACLGroup("user."..accountName, aclGetGroup(acl)) end return false end Apenas troque nome_da_acl para a ACL que você deseja.