Leaderboard
Popular Content
Showing content with the highest reputation on 24/12/18 in all areas
-
Hi there. The Winter Holidays are here, so as usual we have got a new recap and status update post for you. Here is the summary of what has happened this year. ? 2018 in Recap We made efforts towards the new release through the first half of the year, so there was not much to talk about. There was an incompatibility issue with the 360 Total Security software which we advised you about and later in the year, there was a similar issue with McAfee. Late July, we have asked you about your thoughts about refreshing the community.multitheftauto.com portal. We have received some interesting feedback from you and we are still thinking about ways of implementing it, while considering our current resources. Also in July, we have migrated our bug tracking services to GitHub Issues, making it easier to track specific issues and link them to GitHub commits and pull requests. This has also allowed us to clean up our bug tracker - the old system had nearly 8000 tracked issues, some of which were 13 years old or so. On 7th of September, we have released Multi Theft Auto: San Andreas 1.5.6. This release added support for custom IFP animations among other things, like fixing the input and FPS lag reported by some of our users. Then a few days later, we have advised you to upgrade your MTA:SA servers to the latest version due to a server crash exploit that was discovered. There were some additional issues with this hotfix that were spotted later, but they have been all fixed within few days. If you have not yet upgraded your servers though, we still urge you to do so. ? A bunch of interesting MTA:SA-related YouTube videos from this year nX_ Vol.18 - CodeNX™ - 첫 장 - video by ElCrowMvs / map by nX [GTA:DM] Wonder - Interstellar - by Wonder MTA [MTA] Vice City - Map Preview #1 (JStreamer v3) - by Liberty City Roleplay Multi Theft Auto - Tactics - by LoG4nTG Multi Theft Auto - MTA CIT / GTA SA - San Andreas Police Department's 7th Anniversary (Dance Show) - video by PeteyFTW / server: CIT Multi Theft Auto San Andreas Fail + Funny moments #1 - by Mr. Green Gaming Multi Theft Auto: San Andreas - MTA DD - Map: Orgazm Cross - video by Game Master / map by Orgazm MTA:SA Fast And Furious Paradise Trailer ! - by SDRIFTER Abdlmounaim ? Current player counts and version fragmentation statistics Type Amount of players Date / Time Recent peak number of concurrent unique players 30625 players 2018.12.16 (at 16.30 GMT) Highest recorded number of concurrent unique players 34653 players 2018.02.03 (at 17.30 GMT) Recent number of daily unique players 150390 players 2018.12.01 (Saturday) Highest recorded number of daily unique players 185818 players 2018.02.03 (Saturday) Recent number of monthly unique players 605834 players November, 2018 Highest recorded number of monthly unique players 805903 players January, 2018 Player counts were just slightly lower than last year, but we have also had some nice peak values at the beginning of the year. Good to see that there is still an interest in old but great games. MTA:SA Version or series Percentage of players using that version or series as of 24th of December, 2018 1.6.0 (alpha) 0.05% 1.5.6 97.20% 1.5.5 2.00% 1.5.4 (and older) 0.40% 1.4.x 0.20% 1.3.x 0.15% Similar to last year, two of our most recent releases are used by over 99% of our player base. It means that there is little fragmentation between our releases and that players in general upgrade to the newest release once it is available. Also, there seems to be some interest in the newest alpha version as well - that is nice too. ? Status updates Community-wise, our Discord has expanded this year - currently we have got 10 language-specific sections available for you there, as well as the active as usual English ones. We have also opened a new forum section recently to keep appeals for global game bans in one place. Over the next few weeks we intend to refresh our forum rules to better suit the current forum needs. As for mod's development, we will continue working on the next release. We are thinking of integrating a new version of the client installer to reduce amount of issues encountered when installing MTA:SA (as well as to make it easier to investigate the remaining ones). We will also consider adding new features provided by our community members, such as editing collisions and adjusting surface properties by CrosRoad95. That's it for now. ?❄Happy Holidays and all the best to you in 2019! ? -- MTA Team10 points
-
Estou prevendo os seguintes erros neste código: O timer irá bugar se o usuário ficar usando /190 várias vezes. Pois não existe nenhuma verificação que impede o spam do comando. O timer irá duplicar, pois não há nenhuma verificação se ele já existe antes de criá-lo novamente. Um timer de 5 minutos não é 10000 milissegundos, isso é só 10 segundos. 5 minutos são 300000 milissegundos. Erros de indentação no código.2 points
-
2 points
-
setPlayerHudComponentVisible addEventHandler("onPlayerLogin", root, function () setPlayerHudComponentVisible (source, "ammo", false) -- ammo setPlayerHudComponentVisible (source, "weapon", false) -- weapon setPlayerHudComponentVisible (source, "money", false) -- money setPlayerHudComponentVisible (source, "radar", false) -- gps setPlayerHudComponentVisible (source, "health", false) -- hp setPlayerHudComponentVisible (source, "armour", false) -- armour setPlayerHudComponentVisible (source, "clock", false) -- clock end )1 point
-
Este botão é para Citar outra mensagem. Cuidado com informações equivocadas. O botão de código é o <>1 point
-
BalkanRoam, a english freeroam server The first time BalkanRoam appeared on the MTA Server Browser was back in May 15th, 2018. So basically, it's a freeroam server with features that almost no other freeroam server has, some of them are: - A unique Hydra dogfight system ( New heat-seeking missile path and new way of locking onto a target ) - A Free for All event which has 5+ maps ( Minimum players to start the event is 4, 10 is max ) - A brand new clan panel - A VIP sounds system ( VIP's can play 'meme' music for nearby players ) - A dogfight event ( Falkons vs Hawks, atleast 1 player in both teams required to start the event ) Note: The server is heavily optimised, so expect 61 FPS All time ( 61 FPS is the Server's FPS Limit ) So, what are you waiting for ? Join BalkanRoam today and get a free vip subscription which will last 3 months, after 3 months you're gonna have to buy VIP again through ingame money by typing '/buyvip'. Server IP: mtasa://51.77.125.189:22003 Discord Server: https://discord.gg/zVFhKkw Facebook Page: https://www.facebook.com/BalkanRoam Happy holidays!1 point
-
1 point
-
É por isso que o ideal é vc bloquear o uso do /register e criar um painel de login com restrições de segurança. Por exemplo: Proibir contas com símbolos ou espaços no login. Proibir contas com menos de 4 caracteres no login. Proibir contas com mais de 30 caracteres no login e na senha. (você pode simplesmente limitar o número de caracteres que cabem no input do painel) Proibir contas com menos de 4 caracteres na senha. Demonstração de painel de login com segurança avançada: https://www.youtube.com/watch?v=oWiZzCRtNhs&index=6&list=PLfmz7dULp2ueFkL8o8yNJeyEfNY1j57kU1 point
-
Acho que sinceramente o esforço pra fazer isso não valeria a pena. Acho mais válido o cara pensar em um painel menor. Uma alternativa seria usar tabPanel para separar o conteúdo em diferentes tipos em vez de deixar todos juntos. Eu precisei fazer assim com um painel de corporação que eu fiz uma vez, uma aba era cheia de botões de dar TAG e a outra era botões de funções gerais, como pegar viatura, abrir portão de base, pegar skin, pegar armas, pegar vida/colete, etc. Se eu não usasse tabPanel, o painel precisaria ser gigante pra caber todos os botões nele.1 point
-
function Chamado (splayer) local players = getElementsByType ("player") local blip = createBlipAttachedTo (splayer, 62) setElementVisibleTo (blip, root, false) -- oculta o blip para todos elementos for _, driver in ipairs (players) do local account = getAccountName (getPlayerAccount(driver)) if isObjectInACLGroup ("user."..account, aclGetGroup ("Policia")) then setElementVisibleTo (blip, driver, true) -- mostra o blip para todos do grupo "Policia" Timer = setTimer (function() -- Timer setElementVisibleTo (blip, driver, false) -- oculta o blip para todos elementos end,10000,1) -- Tempo pra tudo isso acima acontecer end end end addCommandHandler ("190", Chamado) Tente isso.1 point
-
No caso de Remover e adiciona o Jogador em Uma acl Você pode utilizar As seguintes funções. aclGroupAddObject e aclGroupRemoveObject Mas no seu caso eu adicionei para você em seu código, Use de exemplo caso precisar novamente. OBS: Código não testado. ------------------------------------------------------------------------------------------------------------------------------------------------------------ MarkerPM = createMarker ( 1580.1103515625,-1635.021484375,13.561213493347 -1, "cylinder", 1.5, 5,106,204, 50) -- Local Onde Pega O COPOM ------------------------------------------------------------------------------------------------------------------------------------------------------------ MarkerPM2 = createMarker ( 1599.08984375,-1635.994140625,13.71875 -1, "cylinder", 1.5, 5,106,204, 50) -- Local Onde Finaliza O COPOM ------------------------------------------------------------------------------------------------------------------------------------------------------------ function msg (source) exports.Scripts_Dxmessages:outputDx(source,'#1E90FF[SERVER] #1E90FFDigite /copom Para Começar Seu Turno Na PM',source,255,255,255,true) -- Mesagem end addEventHandler( "onMarkerHit", MarkerPM, msg ) ------------------------------------------------------------------------------------------------------------------------------------------------------------ function ComecoDeTudo (source) local account = getPlayerAccount (source) -- Verifica a conta do jogador local Account_Nm = getAccountName(getPlayerAccount(source)) -- Verifica a conta do jogador if isElementWithinMarker(source, MarkerPM) then -- Verifica se um elemento está dentro de tal marker. if not isObjectInACLGroup("user."..Account_Nm, aclGetGroup("Console")) then -- Funcionará em todas as Acl Exceto Console aclGroupAddObject (aclGetGroup("Console"), "user."..Account_Nm) -- Adiciona a Conta do Jogador na Acl "Console" Trabalho = true setElementVisibleTo ( MarkerPM, source, true ) -- Ativa visibilidade de um Marker Especifico exports.Scripts_Dxmessages:outputDx(source,'#1E90FF[SERVER] #1E90FFVocê Começou Seu Turno, Bom Trabalho.',source,255,255,255,true) -- Mesagem Apos Pegar O Emprego end end end addCommandHandler ("copom", ComecoDeTudo ) -- Comando Pra Pegar O Emprego ------------------------------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------------------------------ function FimDeTudo (source) local account = getPlayerAccount (source) -- Verifica a conta do jogador if isGuestAccount (account) then return end -- se o jogador estiver deslogado então retorna e não executará o restante da função. if isElementWithinMarker(source, MarkerPM2) then -- Verifica se um elemento está dentro de tal marker. if isObjectInACLGroup("user."..getAccountName(account), aclGetGroup("Console")) then -- Verifica se o Jogador Está na Acl_Group "Console" aclGroupRemoveObject(aclGetGroup("Console"), "user."..getAccountName(account)) -- Então se caso ele estiver na Acl Console Essa função irá remover a conta do jogador da ACL Console setElementVisibleTo ( MarkerPM2, source, false ) -- Desativa Visibilidade de um Marker Especifico outputChatBox("#ffffff[ #001AFFTrabalho #ffffff] - #FFFFFFTurno Finalizado, Obrigado Pelo o Trabalho",source,0,0,0,true) -- Mensagem Apos Finalizar O Emprego end end end addCommandHandler ( "acabar", FimDeTudo ) function Aviso (source) outputChatBox("#ffffff[ #001AFFTrabalho #ffffff] - #FFFFFFDigite #001AFF/acabar #FFFFFFPara Concluir o Turno",source,0,0,0,true) end end addEventHandler("onMarkerHit",MarkerPM2 ,Aviso) ------------------------------------------------------------------------------------------------------------------------------------------------------------1 point
-
Aqui, no comando /uber: local solicitantes = {} function pedir (splayer) local money = getPlayerMoney (splayer) if (money >= 30) and solicitantes[splayer] ~= true then local players = getElementsByType ("player") blip[splayer] = createBlipAttachedTo (splayer, 62) solicitantes[splayer] = true setElementVisibleTo (blip[splayer], root, false) for _, driver in ipairs (players) do local account = getAccountName (getPlayerAccount(driver)) if isObjectInACLGroup ("user."..account, aclGetGroup ("UBER")) then local passageiro = getPlayerName (splayer) local lugar = getElementZoneName (splayer) setElementVisibleTo (blip[splayer], driver, true) outputChatBox (" ", driver, 255, 255, 255, true) outputChatBox ("#838B83===============================================", driver, 255, 255, 255, true) outputChatBox (" ", driver, 255, 255, 255, true) outputChatBox ("✘ #838B83Uber Brasil #FFFFFF✘ - O cidadão "..passageiro.." #FFFFFFestá solicitando um Uber em "..lugar.."", driver, 255, 255, 255, true) outputChatBox (" ", driver, 255, 255, 255, true) outputChatBox ("#838B83===============================================", driver, 255, 255, 255, true) outputChatBox (" ", driver, 255, 255, 255, true) end end outputChatBox (" ", splayer, 255, 255, 255, true) outputChatBox ("✘ #838B83Uber Brasil #FFFFFF✘ - Você solicitou um Uber, aguarde até alguém chegar", splayer, 255, 255, 255, true) outputChatBox (" ", splayer, 255, 255, 255, true) elseif solicitantes[splayer] then outputChatBox( "Erro: Você já solicitou o Uber", splayer ) else outputChatBox ("✘ #838B83Uber Brasil #FFFFFF✘ - #ff0000Você não tem dinheiro suficiente para pedir um Uber #000000(#00FF00 R$30 #000000)", splayer, 255, 255, 255, true) end end addCommandHandler ("uber", pedir) No /aceitar: function aceitar (thePlayer, commandName, playerName) local account = getAccountName (getPlayerAccount(thePlayer)) if isObjectInACLGroup ("user."..account, aclGetGroup ("UBER")) then if not playerName then return outputChatBox( "Erro: digite o nome do passageiro!", thePlayer, 230, 0, 0 ) end local theClient = getPlayerFromPartialName (playerName) if theClient then local money = getPlayerMoney (theClient) if (money < 30) then return outputChatBox( "Erro: esse passageiro não tem a quantia necessária!", thePlayer, 230, 0, 0 ) end if blip[theClient] and isElement (blip[theClient]) then destroyElement (blip[theClient]) blip[theClient] = nil end if solicitantes[theClient] then solicitantes[theClient] = nil end takePlayerMoney (theClient, 30) givePlayerMoney (thePlayer, 30) else outputChatBox( "Erro: jogador não encontrado!", thePlayer, 230, 0, 0 ) end end end addCommandHandler ("aceitar", aceitar) Para remover é fácil: if solicitantes[player] then solicitantes[player] = nil end Faça isso no onPlayerQuit também, só substituir 'player' com 'source'.1 point
-
Eu diria que setElementData deve ser usado quando realmente tiver necessidade. Você pode muito bem substituir o uso com tabelas, que seria até o caminho correto do seu projeto em vários casos. Acontece que muitos não sabem as consequências e acaba usando em tudo é conveniente. Não conheço muito tudo que está por trás dessa função internamente no MTA (até porque não programo C++), mas parece ter uma performance muito pior se comparado ao uso de uma tabela em seu lugar. Fora outra coisa que sempre requer uma atenção do programador (do Scripter no caso) que é o uso de banda. Então caso você decida usá-la, preste atenção no último argumento para não utilizar desnecessariamente a sincronização com o outro lado. Último argumento destacado em vermelho.1 point
-
Exato. O setElementData, independente se for feito client ou server-side, sempre será sincronizado com todos os outros jogadores. E essa sincronização consome bastante processamento do servidor. Totalmente inviável. Conexão com banco de dados não deve ser feito a cada frame, ele é pesado demais para ser feito tantas vezes em curtos períodos de tempo. Além disso, conexão com banco de dados só pode ser feita server-side, e um "draw" só pode ser feito client-side. Ou seja, vc precisaria de um triggerServerEvent a cada frame, que ficaria absurdamente mais pesado ainda.1 point
-
Se você setar no lado servidor, ocupará também no lado cliente, se setar no lado cliente, ocupará também no servidor. Na Wiki é claro que seu uso deve ser avaliado, pois é algo que consome uso de banda e processamento (já que ocorre toda essa sincronização entre os clientes com o servidor), e dependendo da necessidade sua utilização pode e deve ser substituída por outros métodos.1 point
-
How about setTimer( function() if not clearing_nonexisting_peds or coroutine.status (clearing_nonexisting_peds) == "dead" then clearing_nonexisting_peds = coroutine.create(forgetNonExistingPeds) end coroutine.resume(clearing_nonexisting_peds) end, 1000, 0 )1 point
-
1 point
-
• Codifique-se de quando postar código em linguagem .lua , formate o código postado na estrada Código. Código: function Comando (player) outputChatBox ("Texto", player) end addCommandHandler ("fulano", Comando)0 points