Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 11/04/23 in all areas

  1. 1.6 has now been released! Original post: Multi Theft Auto: San Andreas 1.6 is ready for testing! Our next major build is coming along nicely, so we are keen to let you guys into the action ASAP. Main highlights Two of the main exclusive highlights of this release is the script support for custom IMG containers, and ability to set model flags. Big thanks to @TheNormalnij for his efforts on making these happen! There are also numerous other changes such as updated translations and main menu texts, new GTA skins, improved sync, improved GTA camera screenshot quality and many other bug fixes and improvements which you can find on our Wiki page. By having you join us to test 1.6 we can make sure we catch any new bugs and fix them before the full release. Backwards compatibility 1.6 is not compatible with the older MTA:SA versions (including the most recent release - MTA:SA 1.5.9). This means that you need to connect to a 1.6 server if you wish to test the 1.6 client. There were a bunch of technical reasons for this incompatibility and they were all necessary for us to continue improving the mod. Currently 1.6 includes 12 backwards incompatible changes which you should be aware of. There may be more incompatible changes to be added during this testing phase. Please check out our preliminary release notes on our Wiki page. Public test servers We are hosting a number of official 1.6 public test servers during the 1.6 testing phase for you to try out. Welcome! After the testing phase is over, our public test servers will be shut down. Full release schedule We are planning a full release of 1.6 around May–June if testing phase goes well. To guarantee a smooth transition for your server, we recommend that you try out and upgrade your scripts on this new testing version before the full release. There will be a new announcement once 1.6 is fully released. Keeping your 1.6 up-to-date Once you've installed 1.6, MTA will automatically prompt you to update to a newer version whenever there is an update available, including once we release 1.6 in full - so no need to download and reinstall 1.6 again. What happens to 1.5? 1.5 installations will be kept intact even after the 1.6 release, to let players and server owners switch over to the new version whenever they feel they are ready. However, new features and changes will only be available on 1.6. Note, that you can have both 1.5 and 1.6 installed at the same time on your computer to allow you to switch between if you want. MTA will prompt you to switch to the correct version if the server doesn't support your current version. CLICK HERE TO DOWNLOAD MTA:SA 1.6 BETA If you spot a bug in MTA, please report it here, or if you spot a bug in of our default resources, please report it here instead. See you in game! --MTA Team
    2 points
  2. Server-side local pendentes = {} -- Lista de players que tem solicitação de skin pendente. Formato: [playerElement] = skinID, local timersPendentes = {} -- Lista com os timers de cada solicitação. addCommandHandler("mudarskin", function(thePlayer, cmd, playerName, skinID) -- Comando para enviar a solicitação para o jogador. if not playerName or not skinID then outputChatBox("Sintaxe: /mudarskin <NomeJogador> <skinID>", thePlayer) return -- Se faltou especificar o nome do jogador ou o id da skin no comando, cancela a função e nada acontece. end local otherPlayer = getPlayerFromPartialName(playerName) -- Obtém o jogador pelo nome. if otherPlayer then -- Se encontrou o jogador, então: if pendentes[otherPlayer] then -- Se o jogador já tem uma solicitação na lista, então: outputChatBox("Este jogador já tem uma solicitação de skin pendente.", thePlayer) else -- Se o jogador ainda não tem uma solicitação na lista, então: pendentes[otherPlayer] = tonumber(skinID) -- Adiciona a solicitação dele na lista. outputChatBox("Você recebeu uma solicitação de skin "..skinID..". Digite /aceitarskin ou /recusarskin", otherPlayer) -- Manda isso pra ele. timersPendentes[otherPlayer] = setTimer(function() -- Depois de 10 segundos, expira a solicitação. pendentes[otherPlayer] = nil -- Remove a solicitação da lista. timersPendentes[otherPlayer] = nil -- Anula a variável do timer, removendo da lista de timers. outputChatBox("O jogador '"..playerName.."' não respondeu a sua solicitação e ela expirou.", thePlayer) end, 10000, 1) end else -- Se não encontrou o jogador pelo nome, então: outputChatBox("Não foi encontrado nenhum jogador com o nome '"..playerName.."'", thePlayer) end end) function getPlayerFromPartialName(name) -- Função útil que faz o mesmo que getPlayerFromName, mas o nome não precisa ser exato. local name = name and name:gsub("#%x%x%x%x%x%x", ""):lower() or nil if name then for _, player in ipairs(getElementsByType("player")) do local name_ = getPlayerName(player):gsub("#%x%x%x%x%x%x", ""):lower() if name_:find(name, 1, true) then return player end end end end function changeSkin(thePlayer, cmd) -- Função de aceitar ou recusar solicitações. if pendentes[thePlayer] then -- Se o jogador que executou o comando tem alguma solicitação na lista, então: if cmd == "aceitarskin" then -- Se ele usou o comando /aceitarskin então: setElementModel (thePlayer, pendentes[thePlayer]) -- Muda a skin dele. outputChatBox("Você aceitou a solicitação de skin.", thePlayer) else -- Se ele usou o comando /recusarskin então: outputChatBox("Você recusou a solicitação de skin.", thePlayer) end pendentes[thePlayer] = nil -- Remove a solicitação da lista. if isTimer(timersPendentes[thePlayer]) then -- Se existe o timer da solicitação, então: killTimer(timersPendentes[thePlayer]) -- Cancela o timer da solicitação. timersPendentes[thePlayer] = nil -- Remove o timer da lista de timers. end else -- Se o jogador que executou o comando não tem nenhuma solicitação na lista, então: outputChatBox("Você não tem nenhuma solicitação de skin para aceitar ou recusar.", thePlayer) end end addCommandHandler("aceitarskin", changeSkin) addCommandHandler("recusarskin", changeSkin)
    2 points
  3. @SciptNovato na nova atualização 1.6 do MTA, a função getAllElementData passa a funcionar também client-side.
    1 point
  4. Hi, Ban appeals and ban-related questions/issues are no longer being handled as of 25th January. You can read more about the changes affecting this here: Wait for the ban to expire and make sure you fully remove the cheating program(s) you're using. We do not condone cheating in any forms. There's nothing to debate upon so please take my (short) explanation into account and cease asking about your ban as it may attract administrative punishments like it says in the topic linked above. ?
    1 point
  5. Te recomendo ver videos do youtube e aprender a ler a wiki de imediato, tudo você consegue resolver vendo a wiki, só saber pesquisar, leia o tópico Tutorias em Geral e veja o que lhe ajuda de começo, também veja os videos que estão demonstrando a Aqui. Fora isso caso tenha dúvidas use comunidades de scripts, este forum e o discord do mta.
    1 point
  6. ElementDatas só serão nil se você setar esse valor nele. ElementDatas que não existem, não vão aparecer ali no getAllElementData. Se você quer que tal elementData exista mas não esteja sendo usada, normalmente definimos valor false nela. Se for o caso de setar false na data, você faria a condição ali assim: if objeto then -- É o mesmo que if objeto ~= false then
    1 point
×
×
  • Create New...