Jump to content

DNL291

Retired Staff
  • Posts

    3,875
  • Joined

  • Days Won

    67

Everything posted by DNL291

  1. setPedAnimation( ped, "kissing", "gift_give", -1, false, false, false ) setPedAnimationProgress( ped, "gift_give", .1 ) @OSKHNAV
  2. Exemplo: local locais = { ["LS"] = { 1213.4901123047, -996.64312744141, 31.86874961853 }, ["SF"] = { 1213.4901123047, -996.64312744141, 31.86874961853 }, ["LV"] = { 1213.4901123047, -996.64312744141, 31.86874961853 }, } local x,y,z = unpack(locais["LS"]) setElementPosition(vehicle, x,y,z)
  3. Sim, Outra coisa que fiquei de mencionar: em vez de salvar um únco veículo você pode salvar os ids numa tabela e salvar na conta como JSON (toJSON).
  4. Salve os IDs na conta. Uma chave por exemplo "disabledVehsMods". Mantenha no cliente os desativados e quando o jogador sair/deslogar faz um trigger e salva na conta. Daí o carregamento das texturas também vai deve ser com base nessas configs.
  5. Remova o parâmetro player da função e use source em vez de player.
  6. Movido para Portuguese / Português > Programação em Lua @pitu_beats
  7. Try: function showStats(player) local playerName = getPlayerName(player) local qh = dbQuery(db, "SELECT skin, money FROM accounts WHERE username=?", playerName) local result = dbPoll(qh, -1) if result then result = result[1] for _, row in ipairs(result) do outputChatBox("Skin: " ..row["skin"].. "Money: "..row["money"] .. "") end end end addCommandHandler("stats", showStats) @Ziemo
  8. Você criou a função 'MChat2' então no addEventHandler quer chamar ela, como vai ficar o addevent?
  9. Do a test with this code: function showStats(player) local playerName = getPlayerName(player) local qh = dbQuery(db, "SELECT skin, money FROM accounts WHERE username=?", playerName) local result = dbPoll(qh, -1) if result then for _, row in ipairs(result) do outputChatBox("Skin: " ..row["skin"].. "Money: "..row["money"] .. "") end end iprint( "qh " .. qh ..", result: ".. result ) end addCommandHandler("stats", showStats) Also, post the code where you create the table and save these values if possible.
  10. Você não está definindo o nome da função no addEventHandler, 'greetPlayer' será nil. E depois de 'MChat' coloque dois parêntesis '()'. Da próxima vez use o botão <> para postar seu código, leia.
  11. function player_WastedOrQuit() if playerBlips[ source ] then destroyElement(playerBlips[ source ]) playerBlips[source] = nil end end addEventHandler("onPlayerQuit", root, player_WastedOrQuit) addEventHandler("onPlayerWasted", root, player_WastedOrQuit)
  12. Agora tá depois de eu mover, você tinha postado em Scripting que é a seção internacional. A propósito, acho que você esqueceu de postar o script.
  13. O local correto para posts em português é Portuguese / Português (em Programação em Lua). Não vejo o script, @playerpocket
  14. Are you sure username is the player name and not the account name? @Ziemo
  15. https://wiki.multitheftauto.com/wiki/IsPlayerInACL Use essa função ^ para obter todos jogadores do grupo, faça um loop com getElementsByType. Para a visibilidade você vai precisar o usar o último argumento de createBlipAttachedTo blip createBlipAttachedTo ( element elementToAttachTo [, int icon = 0, int size = 2, int r = 255, int g = 0, int b = 0, int a = 255, int ordering = 0, float visibleDistance = 16383.0, element visibleTo = getRootElement( ) ] ) setElementVisibleTo irá definir a visibilidade para o player. @function learnLua
  16. Tenho certeza que sua dúvida já foi respondida, mas parece que você não conseguiu assimilar as coisas. Ou então você se expressou muito mal e ninguém entendeu.
  17. É uma verificação dentro do loop, em cada time eu obtenho os players e verifico se é maior que o do time anterior, se for armazeno na variável teamName. Daí no final do loop o valor da variável (teamName e highestTeamPlayerCount) serão correspondentes ao time com mais players. Se você quiser fazer uma classificação do time com mais players até o que menos têm, a função do MaligNos vai ser útil @Giovany Mito
  18. No seu código o loop ta certo mas faltou a verificação do team com mais players. O código do MaligNos deve funcionar. Mas vou postar aqui a função que fiz que fará o mesmo, mas sem o table.insert/table.sort que tem um tempo na execução um pouco maior: local minutos = 20 function getTeamWithMorePlayers() local teams = getElementsByType("team") if #teams == 0 then return false end local teamName = false local highestTeamPlayerCount = 0 for _,team in pairs(teams) do local playerCount = countPlayersInTeam(team) if playerCount > highestTeamPlayerCount then highestTeamPlayerCount = playerCount teamName = getTeamName(team) end end return teamName, highestTeamPlayerCount end function TOPTeamCont() local teamName, playerCount = getTeamWithMorePlayers() if teamName and playerCount then outputChatBox ("#1a6cef**#FFFFFF[#1a6cefFW-INFORMA#FFFFFF]#e0e0e0A Maior Equipe Online no Momento é a ".. teamName .." , #FFFFFF Com[#1a6cef" .. playerCount .. "#FFFFFF]#e0e0e0 Online",getRootElement(),255,255,255,true) end end setTimer( TOPTeamCont, minutos * 60000, 0 ) Também, ali em minutos eu criei a variável do intervalo da execução do timer (que será a cada 20 minutos).
  19. Fiz o código com o clique no botão dx e createVehicle: local sx,sy = guiGetScreenSize() local _sx, _sy = 1440 /sx, 900 /sy local painel1_mostrando = false local panelX, panelY, panelWidth, panelHeight = _sx * 94, _sy * 207, 166, 232 local btnX, btnY, btnWidth, btnHeight = panelX + 10, panelY + 25, 80, 40 addEventHandler( "onClientResourceStart", resourceRoot, function() addEventHandler( "onClientClick", root, onScreenClick ) -- sempre que clicar na tela, essa função será chamada bindKey ( "F2", "down", openDXPanel ) -- a tecla 'f2' vai ser usada pra abrir ou fechar o painel end ) function onScreenClick( button, state ) if (button ~= "left") or (state ~= "up") or isConsoleActive() or isMainMenuActive() then return end; -- isConsoleActive() e isMainMenuActive() - tô usando pra desativar o uso do painel -- quando o console (F8) e/ou o Menu principal estiverem mostrando if painel1_mostrando == true then -- verificar se o painel DX tá na tela if isMouseInPosition( btnX, btnY, btnWidth, btnHeight ) then -- aqui significa que o botão DX foi clicado -- fechar o painel removeEventHandler( "onClientRender", root, DX1 ) showCursor( false ) painel2_mostrando = false createVehicle( 560, -1264.578, -186.06383, 13.802 ) -- veiculo deve ser criado no lado server; esse é só um exemplo end end end function openDXPanel() if painel1_mostrando ~= true then addEventHandler( "onClientRender", root, DX1 ) showCursor( true ) painel1_mostrando = true elseif painel1_mostrando then removeEventHandler( "onClientRender", root, DX1 ) showCursor( false ) painel1_mostrando = false end end function DX1() dxDrawRectangle( panelX, panelY, panelWidth, panelHeight, tocolor(0, 0, 0, 130), false ) dxDrawRectangle( btnX, btnY, btnWidth, btnHeight, tocolor(0, 0, 0, 130), false ) -- botão end function isMouseInPosition ( x, y, width, height ) if ( not isCursorShowing( ) ) then return false end local sx, sy = guiGetScreenSize ( ) local cx, cy = getCursorPosition ( ) local cx, cy = ( cx * sx ), ( cy * sy ) return ( ( cx >= x and cx <= x + width ) and ( cy >= y and cy <= y + height ) ) end Tente entender o código. Qualquer dúvida sobre o código só perguntar (não to afim de explicar agora, cansado).
  20. O addEventHandler tem que ser definido depois do trailer ser criado, já corrigiu isso?
  21. time = team ? Obter o team com mais players: getElementsByType countPlayersInTeam Timer + msg no chat: setTimer outputChatBox
  22. Apenas remova o root da função inicio, que ficará assim: function inicio () Você precisa aprender o que é lado server e lado cliente, leia: https://wiki.multitheftauto.com/wiki/PT-BR/Introdução_ao_Scripting https://wiki.multitheftauto.com/wiki/PT-BR/Recursos Edit: leia também este tópico Quanto ao seu código, é opcional mudar para o lado cliente, faça da forma que está se isso for atrapalhar no seu progresso. Você só vai ter uma noção do assunto quando tiver uma base na programação/scripting, caso contrário você sempre terá dúvidas sobre client-server.
  23. onClientVehicleDamage + cancelEvent Aqui no fórum já tem alguns tópicos com o código que você está procurando, só pesquisar.
  24. Entendi. A forma que você mencionou é correta. Login > getAccountData > setElementData Logout/Quit > getElementData > setAccountData account-data : salvamento externo (no banco de dados do MTA) element-data : salvamento temporário em um elemento Se você criar um sistema próprio de armazenar você pode substituir pelo element-data, exemplo básico: local elements = {} function setElementCustomData( element, str, value ) if not elements[element] then elements[element] = {} end elements[ element ][ str ] = value end function getElementCustomData( element, str ) if elements[element] then return elements[element][str] end return false end -- exemplo addEventHandler( "onPlayerChat", root, function( message ) if not wasEventCancelled() then setElementCustomData( source, "lastChatMessage", message ) end end ) addCommandHandler( "lastmsg", function( thePlayer ) local msg = getElementCustomData( thePlayer, "lastChatMessage" ) outputChatBox( "Última mensagem: " .. (msg or "N/A"), thePlayer ) end ) Daí você também pode fazer a sincronização dos dados da tabela com triggerClientEvent, usando uma versão igual no clientside com os mesmos dados que no server.
×
×
  • Create New...