Jump to content

DNL291

Retired Staff
  • Posts

    3,875
  • Joined

  • Days Won

    67

Everything posted by DNL291

  1. addCommandHandler setTimer isTimer outputChatBox E salve o timer do jogador numa tabela. Exemplo e código pronto () : local vipPlayers = {} local permitirVIPHoras = 2 addCommandHandler( "vip", function( p ) if not vipPlayers[p] then outputChatBox( "Agora você é vip!", p ) vipPlayers[p] = setTimer( function() vipPlayers[p] = nil end, (permitirVIPHoras * 3600) * 1000, 1 ) elseif isTimer(vipPlayers[p]) then outputChatBox( "Espere 2 horas para pegar o vip novamente", p ) end end )
  2. Você vai precisar do element-data do playtime, de resto é só aplicar o getElementData + setAccountData para o salvamento seguindo a mesma ideia do código do Jonas.
  3. addEventHandler "onPlayerQuit" "onResourceStop" "onPlayerLogout" getElementData getPlayerAccount setAccountData "onPlayerLogin" getAccountData setElementData Você vai precisar dessas funções/evento.
  4. Deve ser porque o 9 não tem compatibilidade total com o MTA, enquanto que o 7 é mais estável (não sei se hoje em dia já vale a pena usar no lugar do 7, mas na dúvida é melhor optar pelo que garante melhor compatibilidade).
  5. Sou um leigo em sistema Linux, mas pelo que vi falar é o Debian 9 é o melhor, principalmente pra quem não têm experiência com Linux. Por via das dúvidas é sempre bom pesquisar na internet para tomar a melhor decisão.
  6. Faça seus testes e veja o resultado, a função seta offSets então você pode ajustar da forma que quiser.
  7. Se você testou da forma que está no post do Jonas, obviamente vai ter esse erro pois a convertNumber será chamada antes de ser definida como função. Mostre seu código aqui.
  8. Sim, se remover o script protegido obviamente não vai mais ter a proteção, então o script principal deve ser o mesmo que da proteção do exports e cancelEvent. Se tirar a função exportada do meta o exports irá falhar pois o resultado do exports será diferente de true ou terá erro no script
  9. Lá no começo do tópico já postaram a função getServerIp: fetchRemote("http://checkip.dyndns.com/", function (response) if response ~= "ERROR" then SERVER_IP = response:match("<body>Current IP Address: (.-)</body>") or "127.0.0.1" end end ) Tente assim: local bool = false local function isServerAllowed() return bool end fetchRemote( "http://checkip.dyndns.com/", function( response ) if ( response ~= "ERROR" ) then SERVER_IP = response:match( "<body>Current IP Address: (.-)</body>" ) or "127.0.0.1" if ( SERVER_IP ~= "127.0.0.1" ) then -- seu IP vai aqui return end bool = true end end ) Esse será o resource de proteção (código server-side). No meta.xml você exporta a função isServerAllowed: <meta> <script src="server.lua" type="server" /> <export function="isServerAllowed" type="server" /> </meta> Resource a ser protegido: debug = nil local _cancelEvent = cancelEvent local function cancelEvent( ... ) return _cancelEvent( ... ) end local _exports = exports local function exports( ... ) return _exports( ... ) end addEventHandler( "onResourceStart", resourceRoot, function() if exports["nome_do_resource"]:isServerAllowed() ~= true then cancelEvent( true ) end end ) Não é uma proteção tão avançada, mas em relação a leigos burlar o sistema deve funcionar.
  10. Qual o objetivo exatamente? Baixar arquivos, meta e scripts de um link sim é possível, você pode salvar em cada resource do server (filepath). Pra ligar o resource só com a função startResource. Não entendi sobre o meta ser ativado/desativado. Acho que você quis dizer o resource em si, isso é possível se você puder de alguma forma saber quando todo arquivos do resource forem baixados, então inicie o resource. Com códigos Lua em especifico você pode 'ativar' com loadstring - pcall EDIT: nunca fiz um sistema assim, então não garanto que funcionará da forma que disse acima
  11. O parâmetro do "onPlayerMarkerHit" é a marker, player é a source.
  12. Mas e aí, conseguiu fazer funcionar agora? Pra dividir é só armazenar a divisão numa variável (já fez) e cada parte distribuir. dinheiro1, dinheiro2 não sei de onde é esses valores, também não sei se com "tabelas feitas em if" você quis dizer as verificações em If. Sobre o erro, realmente um erro às vezes pode ser o que mais tira tempo quando você está desenvolvendo, por isso é muito importante você saber depurar da melhor forma. EDIT: local vinte = (20 * dinheirototal) / 100 -- 20% do valor total Seria o cálculo pra obter 20 por cento do valor total. @LucasMTA
  13. Não entendi, explique melhor por favor. Explique qual a ideia por trás do código.
  14. https://wiki.multitheftauto.com/wiki/ConvertNumber
  15. @Renazz Erros básicos você cometeu e quer ajudar o dono do tópico como? Deixe isso pra quem tem tal conhecimento e evite causar confusão em quem está precisando de ajuda. Toda ajuda é boa e ajuda a pessoa a progredir, mas assim você só está atrapalhando no tópico, além disso não é com códigos prontos que se ensina, muito menos com códigos prontos com erros bizarros pra quem sabe fazer scripts.
  16. addCommandHandler isObjectInACLGroup getAccountName getPlayerAccount aclGetGroup table.concat outputChatBox Edit: função para mostrar a msg só pra quem é do grupo: --https://wiki.multitheftauto.com/wiki/IsPlayerInACL 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 Use-a num loop com getElementsByType.
  17. Na verdade a wiki mostra os argumentos obrigatórios e opcionais. Você pode saber quais a função vai utilizar por padrão desta forma: bool outputChatBox ( string text [, element visibleTo = getRootElement(), int r = 231, int g = 217, int b = 176, bool colorCoded = false ] ) Note os colchetes e veja tudo que está dentro dele. É assim que a wiki mostra todos os argumentos/parâmetros opcionais de uma função. visibleTo = getRootElement() - aqui significa que por padrão, o argumento visibleTo receberá getRootElement() (ou root) a menos que você defina ele. E assim por diante.
  18. Verifique se suas permissões estão ok Você pode baixar uma acl sem modificações aqui e tentar de novo: https://github.com/multitheftauto/mtasa-blue/blob/master/Server/mods/deathmatch/acl.xml e o resource admin se o seu tiver com modificação.
  19. O resource bone_attach pode ser o que você está procurando (serve para player/ped). Aqui as suas funções exportadas: https://wiki.multitheftauto.com/wiki/Resource:Bone_attach
  20. No máximo otimizar o código pra obter um tempo de execução melhor, mas tenho certeza que isso não resolveria 100%. Não sei dizer o que exatamente no script que causa essa demora na atualização da câmera (talvez seja setCameraMatrix/getPedBonePosition, outra função ou os cálculos em si). Com luaJIT implementada no MTA acredito que melhoraria em relação a Lua, mas resolver por completo dificilmente. O código do script que ele usou já está com esse evento
  21. O código às vezes lida com várias operações sendo executadas a cada frame, e o pequeno atraso se faz com que gere um delay na atualização da tela em relação ao jogador.
  22. Renomeie o executável do mta desta pasta: C:\Program Files (x86)\MTA San Andreas 1.5 para Multi Theft Auto Se o problema não for esse, tente reinstalando o seu MTA.
  23. Sinceramente não acho que vale apena fazer isso... É melhor o programador fazer o esforço otimizando o servidor pra evitar excesso no uso do tráfego e rede e cpu. E também: o servidor vai ficar instável > nada vai responder e provavelmente terá o aviso do MTA "Network trouble". Se for outro tipo de instabilidade, garanto que será por scripts mal feitos que comprometem o funcionamento do servidor e nesse contexto, o setTimer seria o problema menor, sendo que o verdadeiro problema estaria no servidor. O que o programador pode fazer quanto a problemas que podem gerar em timers é fazer sempre verificação se elementos/valores são existentes. Você poderia nos mostrar a solução com getTickCount, pois essa parte eu não entendi como vai funcionar da mesma forma que o setTimer, enfim, me parece que seria um trabalho que não valeria a pena, pelos motivos que já citei.
  24. Coloque também no seu código essa output para ver o resultado do element-data: outputChatBox ("@getElementData: "..tostring(getElementData(player,"Algemado")), player) Deixe isso antes do if getElementData(...
  25. Faça essas pergunta a você mesmo: Quando surgiu o problema? Pode ser que tenha sido depois de algum programa (des)instalado, configuração ou alteração no sistema. Já tentou fazer uma restauração do sistema? Fora isso, tem mais algo no seu jogo que está anormal?
×
×
  • Create New...