-
Posts
214 -
Joined
-
Last visited
-
Days Won
7
Everything posted by Boechat
-
Da proxima vez que for inserir um código no site use essa ferramenta:
-
Veja se funciona assim: --server-side function Wasted() setElementData(source, 'Skin', getElementModel(source)) end addEventHandler ( "onPlayerWasted", root, Wasted ) function Spawn() local skin = getElementData(source, 'Skin') or 0 setElementModel(source, skin) end addEventHandler("onPlayerSpawn", root, Spawn) -- This will exec every time a Player spawn
-
Como usar um mesmo onClientRender várias vezes simultâneas?
Boechat replied to ber's topic in Programação em Lua
Teria um problema ter mensagens "ilimitadas" porque pode ficar um spam enorme da tela do jogador né, acho que o ideial (foi o que eu fiz no mod que mencionei acima de log de morte) seria colocar um limite e ir subindo as mensagens, por exemplo: Limite 5 mensagens 1 = oi 2 = sucesso 3 = abobrinha 4 = jujuba 5 = foda-se se chegar uma 6° mensagem "churreia", excluir a 1° mensagem e fazer uma substituição recursiva , ficando: 1 = sucesso 2 = abobrinha 3 = jujuba 4 = foda-se 5 = churreia -
Eu tinha uma host q vivia dando problemas inexplicáveis também, quando eu entrava em contato ficavam de mimimi (chegou a sumir TODOS os meus arquivos uma vez, sorte que eu tinha backup mas mesmo assim perdi alguns dias de progresso que já tinha feito...). Estou com a @WidHost faz dois meses e não tenho absolutamente nada a reclamar por enquanto... E corrija sim cara, esses erros além de poder dar problemas em situações que você ainda não testou, também podem piorar o desempenho do seu server
-
Isso você tem que mexer direto no mod de chat, caso não tenha um mod para tal função, veja se esse te atende: https://www.mtabrasil.com.br/2019/11/chat-rp-descompilado.html
-
[COMO FAZER] Restrição de Skin por elementData...
Boechat replied to Otavio's topic in Programação em Lua
Tá, primeiro você salva a skin do player com "setAccountData" quando ele escolher o sexo: setAccountData(account, 'Skin', getElementModel (source)) -- Lembrando: Não sei como está representado as variáveis da conta (no meu exemplo está account) e do player (no meu exemplo está source), isso você tem que adaptar aí ou manda seu código pra eu dar uma olhada Depois você coloca pra setar a skin salva quando o jogador logar: addEventHandler("onPlayerLogin", root, function(_, account) if not getAccountData(account, "FirstTime") then outputChatBox("Selecione o sexo de seu personagem, lembre-se que você não poderá mudar.", source, 0, 255, 0) setAccountData(account, "FirstTime", true) triggerClientEvent(source,"HRT:AbrirPainelSexoHRT", getRootElement()) local skin = getAccountData(account, 'Skin') --Pegando a skin salva setElementModel (skin, source) --Setando a skin salva else outputChatBox("Seu personagem e sexo já foi escolhido, lembre-se de manter o RP! Nunca deixa a história de seu personagem de lado.", source, 255, 0, 0) end end) Aí você vai ter que ter cuidado e controle de todos os seus scripts que mechem com skin do player e sempre que for mudar a skin de um jogador, verificar se o jogador é do sexo feminino ou masculino pra não colocar um model masculino em um player feminino e vice versa -
Como usar um mesmo onClientRender várias vezes simultâneas?
Boechat replied to ber's topic in Programação em Lua
Você também pode colocar condições dentro da função dx, por exemplo: function dx () --TODO O CÓDIGO --QUE É COMUM --ENTRE AS JANELAS if janelaAtual == 'ligacoes' then --CODIGO DA JANELA DE LIGACOES elseif janelaAtual == 'mensagens' then --CODIGO DA JANELA DE MENSAGENS end end addEventHandler('onClientRender', root, dx) Eu fiz isso com um inventário que eu criei, já que tinha muitas coisas iguais entre as abas de comida, drogas e tal... -
Humm valeu, ajudou demais!
-
Veja se vai funcionar: function click ( button, state) if state == 'down' then if isMouseInPosition ( x*1600, y*900, x*60, y*60) and isEventHandlerAdded ("onClientRender", root, fds) then --Aqui você coloca a posição da imagem e verifica se o evento da página que irá remover está ativo. removeEventHandler("onClientRender", root, fds) addEventHandler('onClientRender', root, novaJanela) end end end addEventHandler ( "onClientClick", root, click) 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 function isEventHandlerAdded( sEventName, pElementAttachedTo, func ) if type( sEventName ) == 'string' and isElement( pElementAttachedTo ) and type( func ) == 'function' then local aAttachedFunctions = getEventHandlers( sEventName, pElementAttachedTo ) if type( aAttachedFunctions ) == 'table' and #aAttachedFunctions > 0 then for i, v in ipairs( aAttachedFunctions ) do if v == func then return true end end end end return false end
-
Se tá com erro então não está funcionando bem... 1° erro o mod está chamando uma posição na tabela que não existe (drift), deve criar isso antes de chamá-lo... 2° erro está chamando uma variável ou função que simplesmente não existe (onRecallTeam), erro "parecido" com o 1° 3° erro está comparando numero com string, dá um tonumber(variavelString) ou tostring(variavelNumero) antes de comparar para corrigir o erro
-
Sim, manda aí os erros e o script senão fica difícil de ajudar
-
Será que não é porque você está fora do range do som? tenta colocar o MinDistance em 0. Você colocou um range muito pequeno e expecífico, além de não ter como ouvir se estiver do lado do veículo, tem que estar ao menos 15 de distancia ????
-
Você usa o destroyElement. Pode destruir assim que a tarefa foi concluída, ou criar um market junto ao objeto e destruir o market + o objeto assim que ele sair do market Algo mais ou menos assim: local objetoExemplo = createObject ( 1945, 1530, -1090, 21, 0, 0, 90 ) local markerExemplo = createMarker ( 1945, 1530, 21, "cylinder", 3, 255, 255, 0, 0 ) --Recomendo deixar o Alpha em 0 para que o marker fique invisível, pro player será como se ele simplesmente se afastasse do objeto e o objeto sumisse function markerLeave ( leavingPlayer, matchingDimension ) if leavingPlayer == localPlayer and source == marketExemplo then destroyElement(objetoExemplo) --Recomendo que chame essa função de destruir o objeto assim que terminar o uso do objeto também, mas como não tenho seu script vou dar o exemplo de saindo do market destroyElement(markerExemplo) end end addEventHandler ( "onClientMarkerLeave", getRootElement(), markerLeave )
-
Ué, dá erro mesmo desativando o seu mod? Manda um print dos erros aí pra ver se posso ajudá-lo Olha, penso em algumas possibilidades: 1 - Você mudou alguma coisa no script sem perceber 2 - O mod funciou perfeitamente até você testar alguma situação em que ele começa a bugar Não tem como o mod funcionar PERFEITAMENTE e parar de uma hora pra outra sem ter mexido em nada do sistema, ou ele já não estava funcionando bem mas você não o tinha testado o suficiente ou alguma coisa do sistema foi modificada
-
Humm saquei, era essa a noção que eu tinha sobre o assunto, muito obrigado. Pode me tirar mais uma dúvida por favor? no caso da função setLowLODElement por exemplo, se eu quiser definir um elemento com baixa qualidade, vamos dar exemplo de um carro, eu tenho que "criar" um segundo carro com baixa qualidade pra vincular o carro com baixa qualidade ao carro com alta qualidade, ou existe um jeito de simplesmente pegar o carro e diminuir a qualidade dele, sem ter que "adicionar" um novo carro com baixa qualidade como referencia. Espero que tenha ficado entendível a minha dúvida kkkk
-
Pode ser que você tenha adicionado algum mod que esteja dando conflito. Dê um /debugscript 3 e poste aqui o que aparece
-
[AJUDA - COMO FAZER] Restrição de skin por elementData.
Boechat replied to Otavio's topic in Programação em Lua
Quando a pessoa selecionar o sexo você tem que gravar a informação da skin feminina na conta com o setAccountData (é server-side), presumindo que você já fez isso no seu script, faça isso: --Lembrando, quando escolher o sexo feminino você deve dar um setAccountData(jogador, 'Skin', IdDaSkinFeminina), se não tiver esse dado, sempre vai setar a skin 0 que é a do CJ. E se haver mais de uma skin feminina no seu server, quando a pessoa mudar de skin, deve mudar esse dado também gravando o ID da nova skin --Não grave nesse dado skins temporarias, como skin femina do SAMU ou skins femininas de gang, já que quando o player relogar ele não deve voltar com essas skins (a não ser que voce queira que logue com essas skins né, claro) addEventHandler ( 'onPlayerLogin', root, function ( _, account) local idskin = getAccountData (account, 'Skin') or 0 setElementData(source, 'Skin', idskin) --Não vai fazer nada em si, mas como você pediu no título, vai guardar a skin no elemento para que você possa tratá-lo no client-side caso preciso. setElementModel(source, idskin) end) -
Coloque um intervalo menor e veja se isso vai funcionar, eu não testei: Client-side: local intervalo = 3600000 -- tempo em milisegundos (atualmente está 1 hora) local tick = getTickCount () function salario () if tick + intervalo <= getTickCount() then triggerServerEvent('pagarSalario', localPlayer) tick = getTickCount () end end addEventHandler ('onClientRender', root, salario) Server-side: local salario = 1000 --Valor do salario addEvent('pagarSalario', true) function pagarSalario () local money = getPlayerMoney (source) setPlayerMoney(source, money + salario) end addEventHandler('pagarSalario', root, pagarSalario)
-
Como usar um mesmo onClientRender várias vezes simultâneas?
Boechat replied to ber's topic in Programação em Lua
Acho que isso não vai mudar nada, só vai fazer sumir e reaparecer a mensagem que estava na tela (vai ser tão rápido que será imperceptível) Eu fiz um sistema parecido com isso que era um log de mortes, tipo do Counter-strike, sempre que alguém matava, exibia pra todos em uma certa área quem matou, se foi HS e a arma. Recomendo que você faça uma função pra cada texto e verifique: se o texto 1 estiver ativo, chame a função do texto 2, se a função do texto 2 estiver ativa, chame a função do texto 3 e assim em diante... Já que o número de textos é limitado, acho que esse é o jeito mais simples. Se não te atender deixa aí uma resposta de como posso ajudar... -
Executar Alguma Função Clicando Em Seu Personagem.
Boechat replied to eqFoxim's topic in Programação em Lua
function click ( button, state, absoluteX, absoluteY, worldX, worldY, worldZ, clickedElement ) if clickedElement == localPlayer then --CÓDIGO end end addEventHandler ( "onClientClick", root, click ) Dá uma olhada melhor na página da wiki: onClientClick -
Então kkk, foi o que eu entendi também, tem a ver com distancia e qualidade de renderização e pá, mas não sei muito bem como se aplica isso no MTA
-
O comando é createObject ( int modelid, float x, float y, float z, [ float rx, float ry, float rz, bool isLowLOD = false ] ) sendo como argumentos obrigatórios: ID do objeto (pode achar todos os objetos em sites também que são melhores organizados), posição x, posição y, posição z argumentos opcionais: rotação x, rotação y, rotação z e se é LowLOD pode ver mais informações na página da função: createObject
-
Alguem sabe como arrumar script de fome e sede?
Boechat replied to AlessandroD's topic in Programação em Lua
Manda o código dos scripts do seu mod aí pra gente ajudar. Não esqueça de colocá-lo como código na opção de formatação lua "<>" -
No começo do código vc pode colocar algo como: function exemplo () local player = source --usar a variável "player" como se fosse o source setElementModel(player, 1) end addEventHandler('onPlayerLogin', root, exemplo)
-
Acho que o titulo já diz muito né kkkk Estou me aperfeiçoando na programação em lua e no MTA e vi que tem muitas funções que mexem nesse tal de "LOD" (como getLowLODElement)e ainda não entendi muito bem esse conceito, se alguém puder me tirar essa dúvida eu agradeço!