Jump to content

Jonas^

Members
  • Posts

    1,016
  • Joined

  • Last visited

  • Days Won

    9

Everything posted by Jonas^

  1. Oi, bom isso é um problema um pouco simples de resolver, na verdade só é simples se você tentou alterar algum arquivo do MTA, por exemplo os arquivos de imagem GUI, que alteram a cor etc. Bom, vamos lá, vou listar passos para você seguir e tentar resolver o seu problema, isso já aconteceu comigo e fiz exatamente isto: 1° - Desinstale o MTA por completo da sua máquina, ( Faça backup dos arquivos dos servidores antes ). 2° - Abra o seu navegador e acesse o site do MTA e baixe a versão mais recente do MTA. 3° - Antes de instalar a versão nova do MTA em seu computador, verifique seu GTA, entre nele offline mesmo, verifique se há travamentos etc. 4° - Caso o passo acima estiver tudo certo, prossiga fazendo o seguinte, entre no site do CCleaner e baixe a versão mais recente do software. 5° - Instale o programa sitado acima e faça uma varredura no seu sistema ( Incluindo os registros ). 6° - Agora instale a versão baixada do MTA e verifique se o problema continuar me avise. 7° - Caso o passo número 3° apresente uma falha, faça download de um novo GTA, ( Remova completamente o GTA antigo do seu computador ) e instale este ou qualquer outro que você queira baixar. Downloads: CCleaner: Clique Aqui MTA: Clique Aqui GTA San Andreas: Clique Aqui
  2. Vlw pessoal por sanar as minhas dúvidas
  3. Não esta sendo exportada, já resolvi o problema, esta função não estava sendo utilizada pelo script então não faria diferença em deixar ou remover. mas eu optei por remover, por questão de um código limpo.
  4. Olá pessoal, gostaria de tirar algumas dúvidas relacionadas a tabelas, não só a tabelas, mas como definições exemplos: Ex 01: Isso é: local infoMsgs = { A mesma coisa que isto: infoMsgs = { Fiz alguns testes, e a funciona ambos, gostaria de saber a diferença ( se tem ) entre local e somente a palavra definida na tabela outro exemplo de definição: Isto é: message = message:gsub("#%x%x%x%x%x%x","") A mesma coisa que isto: local message = message:gsub("#%x%x%x%x%x%x","") Ambos funcionam também, alguém pode me explicar ?
  5. Eu faria assim: outputChatBox("[INFO] - #FFFFFFO Jogador #0BA317"..name:gsub("#%x%x%x%x%x%x","").." #FFFFFFEnviou #0BA317R$: "..amount, playerMoney, 11, 163, 23, true ) Isso enviara:
  6. Você deveria organizar este código, as suas output estão cheia de cores, por exemplo: o começo você usou a cor #HEX #FFFFFF sendo que você poderia ter definido 255, 255 , 255, assim evitando usar uma #hex de cara e utilizando os 2 parâmetros, desta forma você esta usando: outputChatBox("#ffffff♦ #FF7F00- #ffffff「 #FF7F00INFO #ffffff」 - #ffffffO Jogador "..name.." #FFFFFFEnviou #00FF00R$ : "..amount, playerMoney, 255, 0, 0, true) Poderia utilizar assim: outputChatBox("♦ #FF7F00- #ffffff「 #FF7F00INFO #ffffff」 - #ffffffO Jogador "..name:gsub("#%x%x%x%x%x%x","").." #FFFFFFEnviou #00FF00R$ : "..amount, playerMoney, 255, 255, 255, true) OBS: Fiz uma adição a mais, quando um jogador estiver com cor no nick e enviar dinheiro para alguém a cor vai ser a que você definiu e não a que o jogador usar no nick. Siga o exemplo e faça nos demais outputChatBox
  7. Use a ferramenta do fórum lua code para facilitar, não é necessário enviar link de download. Se seu script tiver os 2 lados CLIENT-SIDE e SERVER-SIDE Poste ambos separados para facilitar. Segue a screenshot abaixo:
  8. Vlw estava precisando desta função ;D
  9. Olá pessoal, fiz um script simples para alterar skins, gostaria de saber como posso fazer uma verificação nesta função para que se o jogador já estiver clicado e a skin ter alterado e ele clicar de novo no mesmo botão enviar uma output avisando que ele já esta com tal skin ! Código: function skinv1 () setPedSkin ( source, 73 ) outputChatBox( "Teste skin1", source, 243, 219, 4, true ) end addEvent("Skin1",true) addEventHandler ( "Skin1", getRootElement(), skinv1 )
  10. Pse não faço a mínima idéia do que pode ser já revisei tudo dentro do txd nada de errado
  11. Qual comando você quer bloquear? Talvez com esta função você consiga fazer isto: GetDistanceBetweenPoints3D Mas, você quer fazer a verificação do jogador rival como? por team? OBS: Da próxima vez crie tópico na área correta - Programação em Lua
  12. Tem alguma forma de fazer o evento não executar quando o jogador entrar e somente quando sair? então: A textura só sera ativada se o jogador usar o comando /ativartexturas e destruida quando o jogador sair do servidor, sera que isso pode ser uma solução? o que não estou entendendo é: Oque esta causando esse BUG OBS: Testei aqui desabilitando o evento do onPlayerJoin, mas não tive sucesso na hora do jogador desconectar ele destroy a textura, porém se entrar em outro servidor ou entrar de novo no meu ele continuar mostrando a textura, mesmo destruindo a txd.
  13. Obrigado, esta parte do script que eu não estava conseguindo entender: addEventHandler ("onPlayerJoin", getRootElement(), function () triggerClientEvent (source, "iniciarTexturas", source) -- Executa o evento "iniciarTexturas" do client.lua somente no jogador que entrou. end) addEventHandler ("onPlayerQuit", getRootElement(), function () triggerClientEvent (source, "desativarTexturas", source) -- Executa o evento "desativarTexturas" do client.lua somente no jogador que saiu. end) Eu testei aqui, porém percebi uma bug: Quando um jogador entra no servidor aparece a mensagem que executou realmente o evento, aparece '' Texturas ativadas '' mas, a textura não aparece, apenas se o jogador digitar /desativartexturas e /ativartexturas
  14. Teria como você fazer um exemplo comentado para mim entender cada parte?
  15. Não entendi a parte de desativar e ativar como vou fazer pra ativar e desativar com o onplayerjoin e onplayerquit
  16. Não entendi muito bem, vou usar o evento onPlayerJoin/onPlayerQuit no lado client?
  17. Olá pessoal, bom eu fiz um script de textura para meu servidor, porém ele contém um bug, se um jogador entrar no meu servidor, e ir em outro servidor a minha textura ira aparecer para ele lá. ou se o jogador entrar no servidor de alguém primeiro e não tiver a textura lá, e entrar no meu ele não consegue ver as texturas, a não ser que eu de restart na resource código: CLIENT-SIDE addEventHandler('onClientResourceStart', resourceRoot, function () txd = engineLoadTXD ("Textura/texture.txd") engineImportTXD (txd, 14853) end)
  18. Vlw aí pela ajuda, pensei que fosse um erro da função!
  19. Entendi, então se eu não usar ceil ele vai entregar o valor arredondado para cima de qualquer forma? Então meu código ficou assim: kd = math.round( tonumber(kd), 2 ) Para kd = math.round( tonumber(kd), 2, "floor" ) SERVER-SIDE ratio = tostring( math.round( tonumber(ratio), 2 ) ) Para ratio = tostring( math.round( tonumber(ratio), 2, "floor" ) ) Esta parte do SERVER-SIDE é um comando que ao jogador digitar puxa os dados dele, inclusive o ratio então tem o redutor no lado server também. Perfeito agora ele esta arredondando certinho o valor:
  20. Sim claro, é client-side, mas só uma pergunta, esse '' floor '' o que significa? percebi que somente este floor faz a diferença, queria saber o que ele faz, sobre a função estar diferente, tinha um warning nela, assim do jeito que ela esta corrige esse warning
  21. Em relação a parte do script, eu testei na sua tabela de testes de rank e nele também contém o erro, segue a print abaixo: Parte em que a função é chamada: CLIENT-SIDE function scoreInfo (accounts, kills, deaths, ratio) guiSetVisible (scoreWindow, true) guiSetVisible (closeGrid, true) showCursor (true) if accounts then for i, v in ipairs (accounts) do guiGridListAddRow (scoreGrid, accounts[i], kills[i], deaths[i], math.round(tonumber(ratio[i]), 2)) end end end addEvent ("showRank", true) addEventHandler ("showRank", getRootElement(), scoreInfo) SERVE-SIDE function recebeKills () local data = getAccounts () local accTable = {} local killsTable = {} local deathsTable = {} local killDeath = {} local kill = 0 local death = 0 if not data[1] then triggerClientEvent (client, "showScores", client) return end for i, acc in ipairs (data) do table.insert (accTable, getAccountName (data[i])) if not getAccountData (data[i], "kills") then table.insert (killsTable, "0") kill = 0 else table.insert (killsTable, tostring (getAccountData (data[i], "kills"))) kill = tonumber (getAccountData (data[i], "kills")) end if not getAccountData (data[i], "deaths") then table.insert (deathsTable, "0") death = 0 else table.insert (deathsTable, tostring (getAccountData (data[i], "deaths"))) death = tonumber (getAccountData (data[i], "deaths")) end local ratio = kill / death if death == 0 and kill == 0 then -- Se ambos os valores forem 0, deixa o ratio em 0 também. table.insert (killDeath, 0) elseif kill ~= 0 and death == 0 then -- Se death for 0 mas kill não, deixa o ratio como desconhecido, pois não é possível dividir algo por 0. table.insert (killDeath, "?") else -- Se nenhum valor for 0, faz a divisão normalmente e aplica o REDUTOR DECIMAL. table.insert (killDeath, ratio) end end triggerClientEvent (client, "showRank", client, accTable, killsTable, deathsTable, killDeath) end addEvent ("getRank", true) addEventHandler ("getRank", getRootElement(), recebeKills) Função: function math.round(number, decimals, method) if number and type(number) == "number" then decimals = decimals or 0 local factor = 10 ^ decimals if (method == "ceil" or method == "floor") then return math[method](number * factor) / factor else return tonumber(("%."..decimals.."f"):format(number)) end end return 0 end Você não acha que isso pode ser uma falha desta função?
  22. Olá, bom eu tenho um sistema de rank, e nele tem o redutor de casas decimais fazendo uma divisão de kills pelas deaths alguns resultados ele aumenta o valor em 1 na última casa como mostra a print abaixo. Como podemos ver o jogador 1° da lista tem Kills: 12158 Deaths: 7869 Valor inteiro da divisão: 1.545050197 Então o K/D deveria ser: 1.54 Mas, o redutor seta como 1.55 OBS: O redutor esta definido para contar apenas 3 casas ou seja seria as 3 primeiras da divisão Alguém sabe me dizer se isso é uma falha? ou é normal com valores alto o redutor aplicar 1 kdr na última casa a mais em cada jogador. Na real isso só acontece com números grandes de kills e deaths no exemplo abaixo setei kills e deaths em mim e ele deu o valor exato da divisão. Como pode ver ele da o valor exato quando não é números muito grande: Valor inteiro da divisão: 2.6513157895 OBS: As vezes ele seta 1 na última casa até em divisão de números pequenos. 403 ÷ 152 = 2.65 valor exato reduzido pelo script
  23. Oi, bom tente baixar alguns programas para atualização de drivers, um exemplo é o Driver Booster tente atualizar os drivers da sua máquina para ver, as vezes é um problema de driver.
  24. Bom, se quiser pode usar este exemplo também, este exemplo é o mesmo que o do @Lord Henry porém com output avisando sobre desativar/ativar a textura: addCommandHandler ("ativartexturas", function () txd = engineLoadTXD ("Diretorio da textura") engineImportTXD (txd, id da textura que ira modificar) outputChatBox ( "Texturas ativadas !", 0, 255, 0 ) end) addCommandHandler ("desativartexturas", function () if isElement (txd) then destroyElement (txd) txd = nil outputChatBox ( "Texturas desativadas !", 255, 0, 0 ) end end) Tem alguma forma de fazer as texturas ficarem sempre desativada para os jogadores que entrarem? e só ativar se tal jogador quiser que a textura apareça para ele usando o comando /ativartexturas e uma verificação neste comando ? por exemplo: Se tiver ativada as texturas envia: '' As texturas já estão ativadas '' Eu imaginei fazer com xml salvando o valor true e false, mas não achei viável queria saber se tem outra forma
  25. Olá pessoal, bom eu peguei um exemplo aqui apenas para demonstração da minha dúvida, no caso é como se fosse um chat secundário porém ele não faz parte do onPlayerChat ou seja , se eu mutar este jogador ele continua falando nesse chat sem problemas, gostaria de saber como posso adicionar o onPlayerChat na função, Exemplo: function adminChat ( thePlayer, commandName, ... ) local text = table.concat ( { ... }, " " ) local playerName = getPlayerName ( thePlayer ) -- if msgtype == 0 then -- Se a mensagem for pelo /say (tecla T) for _, player in ipairs ( getElementsByType ( "player" ) ) do local account = getAccountName ( getPlayerAccount ( player ) ) if ( isObjectInACLGroup ( "user.".. account, aclGetGroup ( "Console" ) ) ) then outputChatBox ( "#FF0000[DONO] #FFFFFF".. playerName .." : #FF0000".. text, player, 255, 255, 255, true ) end if ( isObjectInACLGroup ( "user.".. account, aclGetGroup ( "Admin" ) ) ) then outputChatBox ( "#FF0000[ADM] #FFFFFF".. playerName .." : #FF0000".. text, player, 255, 255, 255, true ) end end end addCommandHandler ( "ac", adminChat, true ) Lembrando, eu só quero que ele faça parte do onPlayerChat nada mais, continue o mesmo comando /ac mensagem, a tecla t, não tem nada ver com este chat. Na verdade irei usar uma binkey client-side puxando o comando para ser mais fácil dos jogadores digitar, o meu chat é diferente desse, mas é um exemplo bom e eu conseguirei entender. OBS: Já tentei desta forma: addEventHandler( "onPlayerChat", getRootElement(), adminChat ) Não funcionou e mesmo que funcionasse gostaria que ele continuasse com o comando também, mesmo usando a bindkey pra puxar o comando. Bindkey: bindKey("m", "down", "chatbox", "adminChat")
×
×
  • Create New...