-
Posts
3,875 -
Joined
-
Days Won
67
Everything posted by DNL291
-
local variables aren't accessible outside the function. Also, replace 'root' with 'resourceRoot' in event "onClientResourceStart".
-
function onClick(button, state) if (button == "left") and (state == "up") then -- check if dx-rectangle is showing here if isMouseInPosition( x, y, width, height ) then outputChatBox ( "On rectangle click!" ) end end end addEventHandler( "onClientClick", root, onClick ) isMouseInPosition: https://wiki.multitheftauto.com/wiki/IsMouseInPosition
-
onclientrender Ficou certo isso? Ou pesado demais?
DNL291 replied to Lord Henry's topic in Programação em Lua
Você quer dizer quando você cria um veículo e warpa nele usando o admin né? Eu tinha falado do teste que fiz sobre o evento onClientColShapeHit ser chamado quando cria um elemento já dentro dele. Quanto a esse problema de não chamar o evento quando warpa no veículo, acho que não é simples de se resolver, mas você pode fazer um código dentro do "onClientRender" e o evento onClientVehicleEnter com mais alguns outros meios para saber se o jogador entrou no veículo normalmente ou se foi com warp. Ou editar o admin e adicionar um evento pra esta acão. Bem que o MTA já podia ter feito algo pra isso, tipo chamar onClientVehicleEnter quando a função warpPedIntoVehicle é usada. No entanto, pode ser que tenha outro jeito mais simples de detectar isso, pois estou meio por fora do MTA ultimamente. -
onclientrender Ficou certo isso? Ou pesado demais?
DNL291 replied to Lord Henry's topic in Programação em Lua
Sim, é resourceRoot, não tinha lembrado que é só pra colshape do script Então, eu testei dando um veículo pelo painel admin; criei o elemento de colisão, adicionei o evento com a saída no chat e funcionou (usei setDevelopmentMode() + showcol pra ver a colshape). -
onclientrender Ficou certo isso? Ou pesado demais?
DNL291 replied to Lord Henry's topic in Programação em Lua
Eu fiz um teste com uma Colshape no servidor e realmente o "onClientColShapeHit" também é acionado quando cria o elemento (o veículo, no caso) dentro dele. Nesse caso, é só usar os eventos onClientColShapeHit/Leave que deve funcionar; e ao mesmo tempo vai ser bem melhor em questão de performance. A propósito, o código do @Banex têm resourceRoot nos eventos, isso quer dizer que só é chamado para os elementos do próprio resource, então lembre-se de trocar por root. -
erro MTA ERRO CL25 , Diag pastebin
DNL291 replied to FilipeGF's topic in Ajudas relacionadas ao MTA:SA (Cliente/Servidor)
Aqui no fórum tem alguns tópicos relacionados a esse mesmo erro - CL25, veja se este soluciona seu problema: -
onclientrender Ficou certo isso? Ou pesado demais?
DNL291 replied to Lord Henry's topic in Programação em Lua
Você poderia fazer assim, 1º passo: ter o controle de todos elementos dentro da colshape. Adicione na tabela os elementos que colidirem e remova quando sair da colshape (onClientColShapeHit/Leave). Aí vem aquele porém que você citou, e a solução é com "onClientRender". Acho que a melhor alternativa é usar getElementsWithinColShape mas ao mesmo tempo não seria muito bom pra performance dar loop na tabela a cada frame - só que é a única solução, o quão negativo deve ser, isso eu não sei porque depende do volume de jogadores/veículos no servidor e requer um teste pra saber mais precisamente se vale a pena. Talvez também tenham outras formas lidar com os outros veículos criados, por exemplo, um evento que é chamado quando cria um veículo por meio de um painel. Não entendi muito bem o uso dessas tabela no código, fora isso, vejo algumas coisas que precisam de otimização. Você está usando setElementCollidableWith mesmo quando não há necessidade, te recomendo usar uma verificação antes: if isElementCollidableWith( theElement, withElement ) then setElementCollidableWith( theElement, withElement, bool ) end O que você tá fazendo é quase o mesmo que isto: addEventHandler( "onClientRender", root, function() setElementCollidableWith( localPlayer, elem, false ) end ) Outro conselho também, sempre use variáveis locais sempre que puder. Também, muitos dizem que usar pairs é pouca coisa mais rápido pra executar do que ipairs (deve ser uma diferença realmente baixa). -
getControl por algum motivo retorna o valor booleano false que por sua vez causa esse erro quando usado em guiSetText.
-
Use uma verificação pra saber se o elemento-GUI existe: function setControlNumber(...) local args = {...} local num = table.remove(args) if getControl(unpack(args)) then guiSetText(getControl(unpack(args)), tostring(num)) end end
-
createMarker 'onClientMarkerHit' guiSetVisible showCursor
-
Se você usa o resource scores, você pode salvar na conta usando getElementData(player, "deaths") e getElementData(player, "kills"); você vai precisar destas funções e eventos: addEventHandler "onPlayerQuit" "onPlayerLogout" getElementData setAccountData "onPlayerLogin" getAccountData setElementData
-
You're welcome.
-
Replace 'player' with 'localPlayer'.
-
getvehicleoccupant Porque o erro só ocorre em host?
DNL291 replied to Lord Henry's topic in Programação em Lua
Devia ser isso mesmo que o Raynner disse, porque você usou getElementsByType um tempo antes (1 hora) de quando a função do setTimer deveria executar, e o recomendado é usar no mesmo momento da execução. Sobre o outro problema, lá no onClientMarkerHit, coloque uma condição hitElement == localPlayer, parece que por algum motivo, esse evento é acionado pra todos jogadores se me lembro bem. -
Os argumentos em setPedStat estão errados e o uso de isGuestAccount não é necessário.
-
Ninguém vai descobrir porque não abre se você não dar informações. O que acontece quando você abre o jogo?
-
Use addEventHandler + "onClientRender" when player hits the marker in order to keep the text visible. And removeEventHandler when player leaves the mark or when player opens the window.
-
Como não conheço muito bem como o gamemode DayZ funciona, não sei como essa parte do setElementData deve funcionar. De qualquer forma, mostre o código aqui se puder.
-
If you don't want it to work with marker, then just remove it from the code and all codes related to the marker as well.
-
bindKey( "h", "down", function() if isElement(ammugui) and guiGetVisible(ammugui) then destroyElement( ammugui ) showCursor( false ) elseif not isElement(ammugui) then startSale() end end ) Try that.
-
Vender scripts/resources não é ilegal só pelo fato de uma textura ou algo pertencer a eles, acho até a palavra 'ilegal' muito forte pra definir isso. Porém, pode depender do que vender, por exemplo texturas modificadas, bem, eu não gostaria de ver alguma coisa que eu fiz, ser modificada e vendida. Por outro lado, não faria sentido proibir a venda em um todo, porque não teria falta de ética em vender um script seu que nada mais faz alterações relacionadas ao servidor. Quanto à Rockstar Games, pessoalmente nunca fiquei sabendo de nenhuma reclamação ou proibição relacionada a isso, na verdade, eles nunca se importaram muito com o Mod MTA.
-
Detectar ganho de Vida(Detects gain health)
DNL291 replied to LucasToledo's topic in Programação em Lua
Assim: local playerHealth = nil addEvent( "onClientPlayerHealthChange" ) addEventHandler( "onClientResourceStart", resourceRoot, function () playerHealth = getElementHealth(localPlayer) setTimer( function() addEventHandler( "onClientRender", root, detectHPChangeOnRender ) end, 500, 1 ) end ) function detectHPChangeOnRender() local currentHealth = getElementHealth(localPlayer) if (playerHealth ~= currentHealth) then -- playerHealth = currentHealth triggerEvent( "onClientPlayerHealthChange", localPlayer ) end end- 5 replies
-
- 1
-
- detects gain health
- gain health
-
(and 1 more)
Tagged with:
-
O que não está funcionando? A linha 2 parece correta, na função setTimer source retornará nil. Faça isto na função setTimer: setTimer( function(player) setPedAnimation(player, nil) end, 2000, 1, source)