Jump to content

n3wage

Members
  • Posts

    290
  • Joined

Everything posted by n3wage

  1. Não entendi exatamente como seu server pode ficar vulnerável assim (provavelmente problema no código em si?), Mas de qualquer forma você pode checar se o jogador está em download, e, se estiver, bloquear determinadas funções que você considere vulneráveis. -- Server addEventHandler ( "onPlayerJoin", root, function() setElementData ( source, "baixando", true ); end ); -- Client function checkDownload () if isTransferBoxActive() then setTimer ( checkDownload, 5 * 1000, 1 ); -- Refazer a checagem daqui 5 segundos else setElementData ( localPlayer, "baixando", nil ); end end checkDownload() E para checar: if getElementData ( player, "baixando" ) then return outputChatBox ( "Você não pode fazer isso agora !", player, 255, 0, 0 ); end
  2. Acredito que seja por ordem de inicialização, Um resource que é iniciado antes vai ser baixado antes etc, Não tenho certeza Mas na 1.5 foi adicionada uma opção para controlar qual resource vai ser baixado antes, Se quiser ver mais sobre aqui tem tudo explicando (role um pouco até achar download_priority_group).
  3. Você definiu a tabela de maneira errada, Uma tabela corresponde a apenas uma variavel (independente do tamanho ou da quantidade de itens), Ou seja, No seu código apenas a variável r vai corresponder a tabela, g e b vão ter um valor nulo (nil), O código 'correto' ficaria assim: local cores = { {255, 0 ,0}, {255, 0 , 255}, {0, 0, 255}, {0, 255, 255}, {0, 255, 0}, {255, 255, 0}, {255, 90, 0}, } Observe que agora nossa tabela irá se chamar cores e não r, Agora, Para 'gerarmos' um item aleatório da tabela, podemos fazer da seguinte forma: local item = math.random ( #cores ) #cores com o # na frente corresponde ao tamanho da tabela, Nesse caro a função math.random vai gerar um numero de 1 ao tamanho da tabela (7), Agora para pegarmos a cor em si fazemos da seguinte maneira: setVehicleColor( carro, cores[item][1], cores[item][2], cores[item][3] ) cores[item] é para acessarmos o índice que a função math.random nos passou e o [1] é para pegarmos o primeiro item do índice e assim por diante.
  4. if ( getPlayerMoney ( player ) >= 2500 ) then -- tem mais que/ou $2500 else -- tem menos que $2500 end Operadores relacionais
  5. É, Acho que não explico bem mesmo rs, Eu estava falando de modificar o comando, teste você mesmo: function x ( player, cmd ) outputChatBox ( "variavel cmd = " .. cmd, player ) end addCommandHandler ( "comando", x ) Dentro do servidor use /comando depois troque o comando no addCommandHandler, por exemplo: addCommandHandler ( "ola", x ) Reinicie o script e digite /ola (ou o comando que você colocou), Fazendo isso você vai ver que a variavel cmd é o comando que o jogador digitou (ou seja, o comando que está no addCommandHandler).
  6. Usamos _ quando não vamos usar a variável (nesse caso o índice do veiculo), Ai para evitar criar uma variável desnecessária colocamos _, É basicamente como se fosse isso: for nil, carro in ipairs ( ..... Só que não podemos usar nil como nome da variável, então colocamos _ . for _, carro in ipairs ( ....... Detalhe que tambem dá pra usar isso em funções: local _, _, z = getElementPosition ( ... ) -- pegar apenas a posição z de um elemento ___ Sobre o timer, Não é uma boa ideia fazer varios timers infinitos que façam um loop de todos os veículos, Para evitar lag um só já bastaria.
  7. setTimer ( function() for _, carro in ipairs ( getElementsByType ( "vehicle" ) ) do setVehicleColor ( carro, math.random ( 255 ), math.random ( 255 ), math.random ( 255 ) ) end end , 1000, 0 ) Para parar o timer basta usar killTimer.
  8. Sei que já está resolvido mas vou comentar mesmo assim. Seu código não vai funcionar porque source não está definido. Provavelmente o problema no meu código também era esse (Já que não entendi muito bem qual era o elemento do jogador), Mas enfim...
  9. Esse sistema de IDs que você fez não vai funcionar muito bem, Toda vez que alguém sair do servidor o ID das pessoas que entraram depois dessa que saiu vai mudar, acho que você não quer isso... Usa o sistema que te mandei, com algumas adaptações dá pra deixar ele completamente funcional. Já pra usar um sistema de IDs na parte de gang basta trocar a linha 71 para achar o jogador pelo seu ID (se você quiser mesmo usar esse seu sistema de IDS basta ver da linha 56 em diante, Lá mostra como usar a função getPlayerFromID).
  10. Como assim um nome personalizado? Você diz na variável cmd ? Se sim é só modificar o addCommandHandler, Por exemplo: function x ( player, cmd ) outputChatBox ( "x", player ) end addCommandHandler ( "meucomando", x ) ^ Nessa função a variavel cmd vai ser sempre meucomando (igual está no addCommandHandler).
  11. Você foi banido de um servidor ou de todos ? Se for de apenas um você tinha que ter contactado o dono do servidor, Já se for de todos você provavelmente - tentou - usar algum cheat (cheatengine?) ou algo assim, Se for seu caso já era (se o banimento foi permanente), Já se você acha que foi um bug ou algo assim tente criar um tópico nessa area (EM INGLÊS) explicando sua situação.
  12. Se você quiser realmente fazer no lado do servidor (visível para todos, porem com um efeito mais lento) você tem que usar um timer que altere a cor do veiculo a cada x milisegundos, Já no lado do cliente basta usar o evento onClientRender.
  13. Você tem que dar um jeito de salvar o veiculo anterior para depois deletá-lo, Você pode fazer isso com element datas ou com tabelas: veiculo_dos_jogadores = {} -- criar uma nova tabela local luckyBugger = getRandomPlayer() -- get a random player local vx, vy, vz = getElementPosition ( luckyBugger ) -- retrive the player's position -- Checar se ja existe um veiculo na tabela: if ( veiculo_dos_jogadores[source] ) then destroyElement ( veiculo_dos_jogadores[source] ) -- destruir o veiculo antigo veiculo_dos_jogadores[source] = nil -- resetar a tabela do jogador end veiculo_dos_jogadores[source] = createVehicle ( 411, vx, vy, vz, 0, 0, vrot ) -- definir a tabela veiculo_dos_jogadores do player como o veiculo criado warpPedIntoVehicle(source, veiculo_dos_jogadores[source])
  14. Só usar getVehicleTowedByVehicle se não tiver nenhuma carga a função retornara false.
  15. Com area você quer dizer uma radararea ? Se sim basta usar isInsideRadarArea. for theKey,thePlayer in ipairs(players1) do local posX, posY = getElementPosition( thePlayer ) if ( isInsideRadarArea ( variavel_da_area, posX, posY ) ) then --... --... end end
  16. Quando você adiciona um comando usando addCommandHandler a função passada no segundo argumento recebe dois parametros por padrão. thePlayer = Jogador que digitou o comando. cmd = O comando que o jogador digitou, no seu caso sera sempre a string "prender" mas você poderia adicionar mais comandos para a mesma função então esse parametro iria mudar. Os outros paramêtros depois do cmd (nick no seu caso) é você que define, eles farão parte da sintaxe do comando, por exemplo, uma função assim: function minhaFuncao ( thePlayer, cmd, numero ) Vai ter o seguinte comando: /comando [numero], Você pode adicionar quantos parametros quiser, Vale lembrar tambem que você não precisa usar thePlayer ou cmd para nomear as variaveis, Isso: function minhaFuncao ( thePlayer, cmd ) É a mesma coisa que isso: function minhaFuncao ( PLAYER_QUE_DIGITOU, COMANDO_DIGITADO_PELO_JOGADOR ) Obviamente que você teria que trocar thePlayer por PLAYER_QUE_DIGITOU e cmd por COMANDO_DIGITADO_PELO_JOGADOR nas funções usadas no comando.
  17. setElementData ( player_a_ser_desalgemado, "Algemado", nil ) -- ou removeElementData ( player_a_ser_desalgemado, "Algemado" )
  18. Tente assim: function desalgemar_jogador (thePlayer, _, nick ) if nick then if getPlayerFromPartialName ( nick ) then local accName = getAccountName ( getPlayerAccount ( thePlayer ) ) if isObjectInACLGroup ("user."..accName, aclGetGroup ( "Admin") ) then local player_a_ser_desalgemado = getPlayerFromPartialName ( nick ) local nick_do_jogador = getPlayerName ( player_a_ser_desalgemado ) local policial = getPlayerName(thePlayer) if getElementData(player_a_ser_desalgemado, "Algemado") then setPedAnimation ( player_a_ser_desalgemado ) setElementFrozen ( player_a_ser_desalgemado, false ) outputChatBox ( "#000000[#FC0303POLICIA#000000]#A09E9EO #FC0303Jogador "..nick_do_jogador.."#A09E9E Foi Desalgemado pelo #FC0303Policial "..policial..".", root, 255, 255, 255, true) outputChatBox ( "#000000[#FC0303POLICIA#000000]#A09E9EVocê Foi Desalgemado! ", player_a_ser_desalgemado, 255, 255, 255, true) else outputChatBox ("#000000[#FC0303POLICIA#000000]#A09E9EO Jogador Nao Esta Algemado", thePlayer, 255, 255, 255, true) end else outputChatBox("#000000[#ff0000POLICIA#000000]#FF0000Você não tem permissão para usar este comando!", thePlayer, 255, 255, 255, true) end end end end addCommandHandler ( "desalgemar", desalgemar_jogador) Se não funcionar coloque aqui oque o /debugscript 3 mostra. -- Aqui: outputChatBox ( "#000000[#FC0303POLICIA#000000]#A09E9EO Jogador Nao Esta Algemado Pra Executar Este Comando! ", policial, 255, 255, 255, true) Você estava usando policial como o jogador que a mensagem será enviada, só que policial é uma string (o nome do jogador) e não um elemento, O correto seria usar thePlayer.
  19. unbindKey não vai funcionar com as funções de outros resources, Acho que a melhor maneira de fazer isso é cancelando o evento onClientKey se o jogador tiver element data x.
  20. Poste a parte do código onde você chama a função Remover_Auto_acl Juntamente com os valores de dia mês e ano. Checar com a data completa não vai dar certo já que se hoje for 25/01/2015, por exemplo, Este valor vai ser maior que 01/10/2015. Recomendo fortemente você usar timestamp, Vai facilitar bastante sua vida (se quiser existe um tutorial meu sobre isso aqui).
  21. Se você não modificou o código que lhe mandei no outro tópico algemar_jogador vai ser uma função e não um valor true/false Sendo assim você não pode usa-la para checar se um jogador está algemado, Oque você pode fazer é usar tabelas ou element datas, Vou explicar o modo com tabelas. Você primeiro devera criar a tabela em si, Basta usar isso no inicio do script: minhaTabela = {} Agora na parte de algemar o jogador você usa minhaTabela[thePlayer] = true ... E na de desalgemar você checa se ele está algemado usando: if minhaTabela[thePlayer] then -- jogador algemado else -- jogador desalgemado end obs: Não esqueça de definir que o jogador não está mais algemado (usando minhaTabela[thePlayer] = false). Se você quiser pode ler mais sobre tabelas aqui (Na parte de Tabelas Lua).
  22. Você usa upgrade legalsystem (nome do resource) no console e ele automaticamente vai atualizar as funções desatualizadas.
  23. Olhe o primeiro exemplo da função getPedBonePosition, Modificando um pouco dá pra fazer oque você quer.
  24. Porque não funcionaria ? O único problema é que ele contem funções desatualizadas, Porem se você usar o comando upgrade esse 'erro' é corrigido automaticamente.
×
×
  • Create New...